次のファイルがある場合:
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が使用される。grep
awk
$3 ~ /^r/
r
awk
末尾が1
混乱している場合は、次のようにしてください。 trueと評価され、awk
基本操作が実行されます{ print $0 }
。