同様のデータ(input1、input2など)を持つn個のファイルがあり、このファイルの2番目の列(呼び出し)を含む新しいファイルを作成したいと思います。私が使うなら
awk '{print $2}' input{1..n} >> out
次に、入力ファイルの2番目の列にあるすべての項目を含む列を取得します。$1
in out = input1、in out = input2、out = input3、....、out = inputnなど、さまざまなファイルに対して異なる列を設定するにはどうすればよいですか?$2
$2
$2
$3
$2
$n
$2
答え1
BEGIN
次のステートメントを使用して、ステートメントですべての操作を実行できます。getline
awk '
BEGIN {
while(1) {
line = sep = ""
for (i = 1; i < ARGC; i++) {
if ((getline < ARGV[i]) <= 0) exit
line = line sep $2
sep = OFS
}
print line
}
}' input{1..n} > out
答え2
paste
2番目の列をすべて合わせるコマンドを作成できます。
cmd="paste"
for x in input{1..n}; do
cmd="$cmd <(awk '{print \$2;}' $x)"
done
echo $cmd
eval $cmd
答え3
pr
私はデータを劣化させるように設計されたこのツールを使います。
awk '{print $2}' input{1..n} | pr -t --columns=n > out
これは、各ファイルの行数が等しいと仮定します。
答え4
これを使う郵便はがき 参考
awk '{a[FNR] = a[FNR]" " $2}END{for(i=1;i<=FNR;i++) print a[i]}' input{1..n}
配列は異なるファイルの各行を保持します。
FNR 現在の入力ファイルから読み取られたレコードの数。各ファイルの先頭でゼロに設定されます。
END{for(i=1;i<FNR;i++) print a[i]}
ファイルの末尾に配列aの内容を印刷します。