AWKのフィールド区切り記号

AWKのフィールド区切り記号

次の履歴を含む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

関連情報