ループを使用してテキストファイルの2列を別のテキストファイルにコピーするのに問題があります。

ループを使用してテキストファイルの2列を別のテキストファイルにコピーするのに問題があります。

file2.txt19個のデータ列を含むテキストファイルがあります。 C2とC3、C2とC4、C2とC5、...、C2とC19など、一度に2つの列を17の異なるテキストファイルにコピーしたいです。共通データとして、各テキストファイルにC2列が必要です。これを達成するためにforループを使用しようとしています。

awk 'BEGIN { for (i = 2; i <= 19; i++) -v i="$i" '{print $2 $i}'file2.txt > filei.txt}'

ただし、次のエラーが発生します。

awk: BEGIN { for (i = 3; i <= 18; i++) -v i="$i" {print
awk:                                       ^ syntax error
awk: Commnadline:1: BEGIN { for (i = 3; i <= 18; i++) -v i="$i" {print
awk:  unexpected newline or end of string

助けてもらえますか?

答え1

努力する

awk '{for (i=2;i<=NF;i++) print $1,$i > "file" i ".txt"}' file.txt

答え2

テストを経てうまく機能しました

file data

c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18 c19

co=`awk '{print $2}' filename `

no_of_colums=`awk '{print NF}' filename`

for ((i=3;i<=$no_of_colums;i++)); do awk -v i="$i" -v co="$co" '{print co,$i}' filename>$co"c"$i ; done

関連情報