2017-11-28 19 views
0

awkの出力を列に表示するにはどうしたらいいですか?awkの列に出力を表示する

+0

が。つまり、 'print 'の代わりに' print '"%s \ t "、" solani "を使います。a [4]'改行がなくなりますが、それは簡単です修正する。 –

+0

はいそれです!私のポストを更新しました(ごめんなさい) –

+0

ummm、出力値の2番目のセットを追加しました。それらは同じソースファイルか別のソースファイルから来たのでしょうか?別の言い方をすると... 1つのファイルからどれだけ多くの出力を抽出すると思われますか?ファイルから複数のデータセット(抽出する)がある場合は、質問を更新して、ソースファイル内にどのような2セットのデータが表示されるのかを表示してください。 – markp

答えて

1

printコマンドは出力を新しい行で終了させます。そのため、各データ項目が新しい行に表示されていることがわかります。

printprintfに置き換えた場合、各出力は「現在の」出力行に残ります(つまり、出力の最後に改行文字は配置されません)。

は、例えば、あなたが明示的にフィールドセパレータ(例えば、スペース、タブ)を指定する必要がありますに注意してください:

printf "%s\t",$4 # will print field $4 followed by a tab 

を次に、あなたがprint ""を実行するか、行を終了したい場合や、 printf "\n"を使用して、出力の最後に改行文字を追加します。


あなたがフィールドセパレータとしてタブをしたいと仮定すると、あなたがそのようなのような単一のコマンドにあなたの様々なawkコマンドを組み合わせることができ:おそらく最も簡単な方法は、出力タブの代わりに改行され

$ awk ' 
/^Query=/ {split($0, a, ".") ; printf "solani.%s\t",a[4]} 
/^$/   {q=1} 
/Length/ && q {split($0, b, "=") ; printf "%s\t",b[2]} 
/./   {q=0} 
/^>/   {split($0, c, ".") ; printf "dadantii.%s\n",c[4] } 
' file 

solani.1  76  dadantii.2053 
関連する問題