Awkコードを含むファイルに新しい列を追加するにはどうすればよいですか?
original.file
F1 F2 F3 ..F10
f11をoriginal.fileに追加します
F1 F2 F3 ..F10 F11
試してください:
awk 'BEGIN{getline to_add < "f3"}{print $0,to_add}' f
ファイル「f3」から追加する列を読み取り、変数to_addに保存します。その後、ファイルfの各行に列を追加します。
HTHクリス
awk '{print $0, "F11"}' original.file
ファイルに列を追加する場合は、次の操作を実行できます。
remark:フィールド区切り文字FS
は、文字列"fs"
と等しいと想定しています。これを何にでも置き換えることができます。または、フィールドの区切り文字として<空白>を使用するだけの場合は、次のソリューションのBEGIN{FS=OFS="fs"}
の部分を削除できます。
最初に列を追加:
awk 'BEGIN{FS=OFS="fs"}{print value OFS $0}' file
最後に列を追加:
awk 'BEGIN{FS=OFS="fs"}{print $0 OFS value}' file
列の前に列を追加n
:
awk 'BEGIN{FS=OFS="fs"}{$n = value OFS $n}1' file
列の後に列を追加n
:
awk 'BEGIN{FS=OFS="fs"}{$n = $n OFS value}1' file
各列の前に列を追加n1
<n2
<... <nm
:(後ろから開始)
awk 'BEGIN{FS=OFS="fs"; split("n1,n2,n3,...,nm",a,",")}
{for(i=m;i>0;--i) $(a[i]) = value OFS $(a[i])}1' file
または別の値
awk 'BEGIN{FS=OFS="fs"; split("n1,n2,n3,...,nm",a,","); split("value1,value2,...,valuem",v,",")}
{for(i=m;i>0;--i) $(a[i]) = v[i] OFS $(a[i])}1' file
各列の後に列を追加n1
<n2
<... <nm
:(後ろから開始)
awk 'BEGIN{FS=OFS="fs"; split("n1,n2,n3,...,nm",a,",")}
{for(i=m;i>0;--i) $(a[i]) = $(a[i]) OFS value}1' file
または別の値
awk 'BEGIN{FS=OFS="fs"; split("n1,n2,n3,...,nm",a,","); split("value1,value2,...,valuem",v,",")}
{for(i=m;i>0;--i) $(a[i]) = $(a[i]) OFS v[i]}1' file