我试图使用sed在文件中搜索最后一次出现.在HP-UX中,tac选项不可用.
对于Ex:以下是文件中的数据,
A|2121212|666666666 | 2|01|2 |B|1111111111 |234234234 |00001148|
B|2014242|8888888888| 3|12|3 |B|22222222222 |45345345 |00001150|
C|4545456|4444444444| 4|31|4 |B|3333333333333 |4234234 |00001148|
Run Code Online (Sandbox Code Playgroud)
我尝试着:
cat $filename | sed 's/00001148/00001147/g'
Run Code Online (Sandbox Code Playgroud)
对于00001148的出现,它从00001148变为00001147.
我必须搜索|00001148|最后一次出现并替换为另一个号码.目前我的sed命令正在更改00001148的两个实例.
编辑
要匹配最后一行,请使用 $
sed '$s/00001148/00001147/g' $filename
Run Code Online (Sandbox Code Playgroud)
将输出作为
A|2121212|666666666 | 2|01|2 |B|1111111111 |234234234 |00001148|
B|2014242|8888888888| 3|12|3 |B|22222222222 |45345345 |00001150|
C|4545456|4444444444| 4|31|4 |B|3333333333333 |4234234 |00001147|
Run Code Online (Sandbox Code Playgroud)
如果匹配行是文件中的最后一行,请使用tail而不是cat
tail -1 $filename | sed 's/00001148/00001147/g'
Run Code Online (Sandbox Code Playgroud)
该tail命令从文件中选择最后(尾部)行,此处指定采用1行usint -1选项
如果它不是最后一行,
grep "00001148" $filename | tail -1 | sed 's/00001148/00001147/g'
Run Code Online (Sandbox Code Playgroud)
该grep命令查找所有出现的事件并tail选择最后一行并sed进行替换.