awk处理两个文件示例

根据第一列文件ID提取相关文件

文件1(file1)如下:
A   1
B   2
C   3
D   4
文件2(file2)如下:
A
B
D
期望输出(out):
A   1
B   2
D   4
awk语句
awk 'FNR==NR{a[$1];next}($1 in a){print}' file2 file1 > out

根据文件行index提取相关文件

具体如下:
#index.txt: file.txt文件中的行的index
awk 'NR==FNR{a[$0]=1;next}a[FNR]' index.txt file.txt > output.txt

根据文件列index提取相关文件

具体如下:
#index.txt: file.txt文件中列的index
awk 'NR==FNR{a[$1]=$1;next}{for(i in a){printf "%s\t", $i};print ""}'  index.txt file.txt > output.txt

替换文件中的列

文件1(file1)如下:
111 aaa 444
222 bbb 555
333 ccc 666
文件2(file2)如下:
111 333 000 444
222 444 111 555
333 555 555 666
期望输出(out):
111 000 444
222 111 555
333 555 666
awk语句
awk 'FNR==NR{a[NR]=$3;next}{$2=a[FNR]}1' file2 file1 > output.txt

你可能感兴趣的:(awk处理两个文件示例)