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つの置換を使用して最初の空白の前のビットを削除し、次にコンマ内のビットを削除します。残りの文字列を印刷します。

おすすめ記事