我有一个文件:users.txt,如下所示:
Name
Jack
Name
Jackson
Name
Peter
我需要删除 ABOVE 找到的{strong>最后匹配Name
,以便文件如下所示:
Name
Peter
我试过在网上搜索,但只找到可以实现此目的的awk命令。
我需要它 sed 才能使用-i选项进行保存。当使用awk重定向>
标准输出时,我发现文件有时是空的。
非常感谢您的时间和帮助。
答案 0 :(得分:4)
您可以tac
使用awk
两次:
tac file | awk '{print} /Name/{exit}' | tac
Name
Peter
答案 1 :(得分:3)
通过sed,
tac file | sed -n '0,/Name/p' | tac
答案 2 :(得分:1)
使用不sed
的{{1}}:
tac
sed -n '/Name/h; //!H; ${g;p}' file
时,请用当前行替换保留空间Name
时,将当前行附加到保留空间由于我们在管道中没有Name
,您可以使用sed
替换该文件。
答案 3 :(得分:0)
全部在awk
awk 'x{x=x"\n"$0}/Name/{x=$0}END{print x}' file
答案 4 :(得分:0)
这可能适合你(GNU sed):
sed 'H;/Name/h;$!d;x' file
在保留空间中保持匹配,并在文件末尾打印最后一个匹配的保留空间。