awkまたはsedを使用して列に文字を追加しますか?

awkまたはsedを使用して列に文字を追加しますか?

次のファイルがあります。

A3 124.406526 8.281803
A3' 125.000684 8.389677
K4 123.072842 8.166373
K4' 120.092553 8.269080

最初の列に文字を追加したいです。ファイルは次のようにする必要があります。

A3N-H 124.406526 8.281803
A3'N-H 125.000684 8.389677
K4N-H 123.072842 8.166373
K4'N-H 120.092553 8.269080

awkまたはsedで簡単な方法でこれを行うにはどうすればよいですか?

ベストアンサー1

そしてsed

sed -E 's/^([^[:blank:]]+)/\1N-H/' file.txt
  • ([^[:blank:]]+)最初のフィールド(^)に一致し、キャプチャされたグループにのみ入れます。

  • 交換時にN-H最初のフィールドに追加し、\1N-H

そしてawk

awk '{sub("$", "N-H", $1)}; 1' file.txt 
  • sub("$", "N-H", $1)最初のフィールド()の終わりを$に置き換えますN-H。これは必ず内部追加作業を意味します。

  • 1true(変更された)レコードを印刷できるプレースホルダー

例:

% cat file.txt                               
A3 124.406526 8.281803
A3' 125.000684 8.389677
K4 123.072842 8.166373
K4' 120.092553 8.269080

% sed -E 's/^([^[:blank:]]+)/\1N-H/' file.txt
A3N-H 124.406526 8.281803
A3'N-H 125.000684 8.389677
K4N-H 123.072842 8.166373
K4'N-H 120.092553 8.269080

% awk '{sub("$", "N-H", $1)}; 1' file.txt    
A3N-H 124.406526 8.281803
A3'N-H 125.000684 8.389677
K4N-H 123.072842 8.166373
K4'N-H 120.092553 8.269080

おすすめ記事