2016-08-10 14 views
1

私には以下の内容のファイルがあります。ペーストコマンド以外の選択肢はありファイルの内容を並べて表示するbash

hello 1223 
man 2332 
xyz abc 

:私は、所望の側

hello 
1223 
man 
2332 
xyz 
abc 

出力することにより、各ライン側を印刷する必要がありますか?

+0

に特定の理由があります'ペースト'を避ける? –

答えて

2

を使用でき、このawk

awk '{ORS = (NR%2 ? FS : RS)} 1' file 

hello 1223 
man 2332 
xyz abc 

この設定ORSそれは入力レコードセパレータに設定される偶数ラインに対して奇数ライン用の入力フィールドセパレータ(FS)に等しい(出力レコードセパレータ) (RS)。表形式のデータを取得するために

column -tを使用します。

awk '{ORS = (NR%2 ? FS : RS)} 1' file | column -t 

hello 1223 
man 2332 
xyz abc 
+1

ありがとう。 awkの "1"は何ですか? – anudeep

+0

'1'は各レコードを印刷するための' awk'のデフォルトアクションです。 – anubhava

1

のawk/gawkのソリューション:

$ gawk 'BEGIN{ OFS="\t"} { COL1=$1; getline; COL2=$1; print(COL1,COL2)}' file 
hello 1223 
man  2332 
xyz  abc 

バッシュ溶液(なしペーストコマンド):

$ echo $(cat file) | while read col1 col2; do printf "%s\t%s\n" $col1 $col2; done 
hello 1223 
man  2332 
xyz  abc 
関連する問題