項目が特定の文字で始まる場合は、フィールドを別のフィールドに置き換えます。

項目が特定の文字で始まる場合は、フィールドを別のフィールドに置き換えます。

次のファイルがある場合:

223 898 teeth
223 899 mouth
223 900 r9
445 800 round

私の質問は、列3が文字「r」で始まる行に対してのみawkコマンドを使用して、列2を列3に置き換えることができる方法です。置換には gsub を使用できますが、3 番目の列が「r」で始まる行だけを取得することはできません。

また、rで始まる単語を見つけるためにgrepを使ってみました。

grep "r*" filename | awk '{gsub($2,$3); print;}'

ただし、このコマンドは列2を行のすべての列に置き換えます。

ベストアンサー1

努力する:

$ awk '$3 ~ /^r/ {$2 = $3}1' file
223 898 teeth
223 899 mouth
223 r9 r9
445 round round

&をawk使用せずに検索と印刷を1つのコマンドにまとめます。上記のコマンドは、3番目のフィールドがで始まる行のみを検索します。この場合、ゲーム2の代わりにゲーム3が使用される。grepawk$3 ~ /^r/rawk

末尾が1混乱している場合は、次のようにしてください。 trueと評価され、awk基本操作が実行されます{ print $0 }

引用する

おすすめ記事