Awk 我想从数千个文件中提取特定列,并以新文件新列格式打印特定列
我想从数千个文件中提取特定列,并以新文件新列格式打印特定列 输入文件1:Awk 我想从数千个文件中提取特定列,并以新文件新列格式打印特定列,awk,sed,gawk,Awk,Sed,Gawk,我想从数千个文件中提取特定列,并以新文件新列格式打印特定列 输入文件1: a e i b f j c g k d h l 输入文件2: l p t m q u n r v o s w 输入文件3: w 1 5 x 2 6 y 3 7 z 4 8 我想从我正在使用的每个文件中提取第二列 awk ' { print $2 } ' > test.txt 现在,每个提取的列都要按列打印在新文件中,这里我有
a e i
b f j
c g k
d h l
输入文件2:
l p t
m q u
n r v
o s w
输入文件3:
w 1 5
x 2 6
y 3 7
z 4 8
我想从我正在使用的每个文件中提取第二列
awk ' { print $2 } ' > test.txt
现在,每个提取的列都要按列打印在新文件中,这里我有一个查询
预期输出文件:
e p 1
f q 2
g r 3
h s 4
假设是当前目录中的所有文件:否则修改glob模式
files=(*)
awk '{print $2}' "${files[@]}" | pr -t -s" " -${#files[@]} > output.file
# ............................................^^^^^^^^^^^^
# ................this is the number of files in the array
演示
[root@test/tmp]$awk'{a[FNR]=a[FNR]?a[FNR]“$2:$2}END{for(i=1;iA非常类似的方法:cut-”d“-f2*| pr-3t“s”>test.txt
亲爱的先生,谢谢您的回复,但它对我的文件不起作用。我使用的是windows base os。这一点很重要,您不认为吗?您需要GNU工具来回答这个问题。cygwin可以。
$ awk '{print $2}' file1 file2 file3 | pr -t -s" " -3
e p 1
f q 2
g r 3
h s 4
[root@test /tmp]$ awk '{a[FNR]=a[FNR]?a[FNR]" "$2:$2}END{for(i=1;i<=FNR;i++){print a[i]}}' a b c
e p 1
f q 2
g r 3
h s 4