2

以下に示すように、各値が新しい行に出力される Unix ファイル出力を、グループ化された行に変換したいと考えています。

Unix での出力ファイルが次のようになっているとします。

jobname
userid
starttime
endtime
jobname2
userid
starttime
endtime

出力を次のようにしたい:

jobname1 userid starttime endtime
jobname2 userid starttime endtime
4

5 に答える 5

9

これは最小限のawk解決策です。

awk 'ORS=NR%4?" ":"\n"' input.txt 

出力

jobname userid starttime endtime
jobname2 userid starttime endtime

(フィールドを揃えたい場合は、 にパイプしますcolumn -t)

于 2012-08-14T00:14:34.387 に答える
6

これにより、連続する 4 行がそれぞれ 4 つのタブ区切りフィールドとして貼り付けられます。

cat source_file | paste - - - - > destination_file
于 2015-09-14T08:18:51.253 に答える
1

シェルスクリプトを探している場合は、出力に表示される行数が固定長でなければならないように見えるので、これを行うことができます:

while read line1; do
  read line2
  read line3
  read line4
  echo $line1 $line2 $line3 $line4 >>output
done <file
于 2012-08-13T20:56:59.537 に答える
1

GNU sed の場合:

tr '\n' ' ' < file | sed -r 's/(\w+ +){4}/&\n/g'
于 2012-08-13T22:29:20.367 に答える
0

ちょっと醜いですが、シェルスクリプトは必要ありません:

cat outputfile | tr "\n" " " | sed -e 's/\W*\(\w*\) \(\w*\) \(\w*\) \(\w*\)\W*/\1 \2 \3 \4\n/g'
于 2012-08-13T21:07:22.753 に答える