我有一个这样的文件:
20001
17001
17001
53001
90001
90001
90001
Run Code Online (Sandbox Code Playgroud)
当 $1 是重复条目时,我试图通过向它添加一个来修改 $1,因此输出将如下所示:
20001
17001
17002
53001
90001
90002
90003
Run Code Online (Sandbox Code Playgroud) 我是 awk 编程的新手,我正在学习数组的工作原理。我找到了这个代码:
awk 'BEGIN{OFS=FS=","}NR==FNR{a[$1]=$2;next}$3 in a && $3 = a[$3]' filez filex
Run Code Online (Sandbox Code Playgroud)
他们将$1
作为索引放入数组并$2
作为值然后如果$3
等于一个索引并且为这个$3 = a[$3]
。我不明白这是什么意思,因为第一个文件只有 2 列——与第二个文件$3
相比,他们是$3
从哪里想出的?!?
输入文件filez
:
111,111
112,114
113,113
Run Code Online (Sandbox Code Playgroud)
输入文件filex
:
A,bb,111,xxx,nnn
A,cc,112,yyy,nnn
A,dd,113,zzz,ppp
Run Code Online (Sandbox Code Playgroud) 我有一个看起来像这样的文件
ABC
2 3 4
7 9 4
1 2 5
ABC
13 11 17
2 1 1
ABC
7 9 14
5 8 2
9 9 9
7 1 2
Run Code Online (Sandbox Code Playgroud)
我想在每个“ABC”值的末尾打印“END”这个词,这样文件就会像这样
ABC
2 3 4
7 9 4
END 1 2 5
ABC
13 11 17
END 2 1 1
ABC
7 9 14
5 8 2
9 9 9
END 7 1 2
Run Code Online (Sandbox Code Playgroud)
我尝试了很多但我没有解决它,所以任何人都可以在这里提供帮助。