这是我的文件的样子
Gottagohome saab 90 75n > homelog 2>&1&
Gottagohome saab 90 75n > homelog 2>&1&
Gottagohome saab 90 75n > homelog 2>&1&
这些命令是动态生成的。我想要的是寻找最后一个命令并使其像前一样在前景中运行
Gottagohome saab 90 75n > homelog 2>&1&
Gottagohome saab 90 75n > homelog 2>&1&
Gottagohome saab 90 75n > homelog 2>&1
&应该被敲掉最后一个命令。 知道如何做到这一点。 实际上我还需要在最后一次出现gottogohome命令之前插入等待。也有人可以说那个。 TY 萨姆
答案 0 :(得分:7)
你可以在awk中使用tac:
tac file | awk '!done && /Gottagohome saab 90 75n/{done=1; sub(/&$/, "")}1' | tac
答案 1 :(得分:6)
这可能适合你(GNU sed):
sed '$s/.$//' file
编辑:
迎合 last Command :
sed -r '/(Gottagohome saab 90 75n.*)&\s*$/M,$!b;//{x;//p;x;h};//!H;$!d;x;s//\1/' file
答案 2 :(得分:3)
$ awk -v RS= '{sub(/&$/,"")}1' file
Gottagohome saab 90 75n > homelog 2>&1&
Gottagohome saab 90 75n > homelog 2>&1&
Gottagohome saab 90 75n > homelog 2>&1
答案 3 :(得分:1)
要使用&
awk
awk '{a[NR]=$0} END {for (i=1;i<NR;i++) print;NF-=1;print}' OFS="" FS="" file
Gottagohome saab 90 75n > homelog 2>&1&
Gottagohome saab 90 75n > homelog 2>&1&
Gottagohome saab 90 75n > homelog 2>&1
另一个版本
awk 'NR>1 {print f}{f=$0} END {print substr($0,1,length($0)-1)}' file
答案 4 :(得分:1)
awk 'NR==FNR{if(/^Gotta/) a=NR;next} {if (FNR==a) sub(/&$/,"")}1' file file