次のファイルパターンがあります。
insert_buffer cell_a
insert_buffer cell_b
insert_buffer cell_b
...
各行の最後に、番号を1つ増やした列を1つ追加します。 e.x. 0、1、2、3 ...:
insert_buffer cell_a name_0
insert_buffer cell_b name_1
insert_buffer cell_b name_2
...
Awkを使用してforループを実行するにはどうすればよいですか?または、他の解決策でも問題ありません。
$ awk '{$(NF+1) = "name_"(NR-1)} 1' file
insert_buffer cell_a name_0
insert_buffer cell_b name_1
insert_buffer cell_b name_2
組み込みのレコード数NR
の代わりに独自の変数を使用する場合は、たとえば
$ awk '{$(NF+1) = "name_"i++} 1' file
insert_buffer cell_a name_0
insert_buffer cell_b name_1
insert_buffer cell_b name_2
新しいフィールドを別の場所に挿入する場合、そのための1つの方法は、追加の出力フィールドセパレータOFS
とともに、既存のフィールドに追加または追加することです。 2番目のフィールドの前に挿入します
$ awk '{$2 = "name_"i++ OFS $2 } 1' file
insert_buffer name_0 cell_a
insert_buffer name_1 cell_b
insert_buffer name_2 cell_b
これは、以下のようにsed
エディターを使用して実行できます。
sed
には算術の概念がないため、他の方法で実行できることに注意してください。
the variable $n stores the column number where you want the new data placed.
n=2;
sed -ne 1i\\ -e 0 -e p\;= yourfile |\
sed -nE "N;s/\S\+/&\n/$n;s/\(.*\)\n\(.*\)\n/\2 name_\1 /p"
insert_buffer name_0 cell_a
insert_buffer name_1 cell_b
insert_buffer name_2 cell_c