我有这样的文件
1 2 "45554323" p b
2 2 "34534567" f a
3 3 "76546787" u b
2 4 "56765435" f a
* a
0 b
我想从 END{}
部分的最后两条记录中删除 a
、b
结果:
1 2 "45554323" p b
2 2 "34534567" f a
3 3 "76546787" u b
2 4 "56765435" f a
*
0
如何使用 awk 获取最后 n 行并更改它们的字段?
最佳答案
这是使用任何 awk 的一种方法:
awk -v count=$(wc -l <file.txt) 'NR > count - 2 { $2 = "" }1' file.txt
结果:
1 2 "45554323" p b
2 2 "34534567" f a
3 3 "76546787" u b
2 4 "56765435" f a
*
0
或者要对除输入文件最后两行以外的所有记录作为 shell 脚本执行 awk
操作,请尝试 ./script.sh file.txt
。 script.sh
的内容:
command=$(awk -v count=$(wc -l <"$1") 'NR <= count - 2 { $2 = "" }1' "$1"
echo -e "$command"
结果:
1 "45554323" p b
2 "34534567" f a
3 "76546787" u b
2 "56765435" f a
* a
0 b
关于bash - 获取 n 个最后记录并更改它们的特定列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12882738/