次の履歴を含むtxtファイルがあります。
cat,bdb awq,sdcsidsjo hhhd
xs,dun,hat ase, xsdfc
xd,yu,nor acc,cuiov dfvgf
下の単語(スペースの後の2番目の列)だけを出力したいと思います。
awq
ase
acc
awk '{print $2}'
のようawk 'BEGIN {print $2} { FS="," }'
なコマンドを試しましたが、何も機能しませんでした。誰でも入手する方法がわかりますか?awk '{print $2 FS=","}'
awk 'BEGIN{ORS=",";} {print $2}'
最初の列の質問を編集しました。 awk 'BEGIN { FS="," } {print $2}' を使用するとコンマがあります。
私が得た結果はbdb dun yu
しかし、結果をawq ase accとしてマークしたいと思います。
誰でも結果を得る方法を知ることができますか?
答え1
(新しい質問で更新)
次のカンマまで空白の後の最初の単語を抽出したいようです。
$ awk -F ' ' '{ split($2,a,","); print a[1] }' <file
awq
ase
acc
これはデータをスペースで区切られたものとして扱い、次にスペースで区切られた2番目のフィールドを取得し、明示的にコンマに分割し、その結果の最初の結果文字列を印刷します。
または以下を使用してくださいsed
。
$ sed 's/^[^ ]* //; s/,.*$//' <file
awq
ase
acc
これは、2つの置換を使用して最初の空白の前のビットを削除し、次にコンマ内のビットを削除します。残りの文字列を印刷します。
答え2
Command: for i in `echo "cbdb awq,sdcsidsjo hhhd xsdunh ase, xsdfc xdyun acc,cuiov dfvgf" | awk -F "," '{print $1,$2,$3}'`; do echo $i | awk '/^a/{print $0}'; done|tr "\n" " "
入力する
cbdb awq,sdcsidsjo hhhd xsdunh ase, xsdfc xdyun acc,cuiov dfvgf
出力
注文する
for i in `echo "cbdb awq,sdcsidsjo hhhd xsdunh ase, xsdfc xdyun acc,cuiov dfvgf" | awk -F "," '{print $1,$2,$3}'`; do echo $i | awk '/^a/{print $0}'; done|tr "\n" " "
出力
awq ase acc