AIX系统下使用sed删除文本最后一行末尾的“, \”
解决AIX系统中删除文本最后一行末尾“, \”的问题
嘿,你之前用的sed "s/\//" test.txt命令没生效很正常——它有两个关键问题:一是sed的替换语法不完整,二是匹配的模式根本没对准你要删除的目标内容。我来给你说下正确的处理方式,适配AIX系统的POSIX标准sed:
先预览修改效果(不改动原文件)
先运行这个命令看看结果是否符合预期:
sed '$s/, \\$//' test.txt
为啥这个命令管用?
$:这是sed的地址定位符,意思是只对最后一行生效,不会误改其他行;s/, \\$//:这是核心的替换规则:, \\:匹配你要删除的,(逗号加空格)加反斜杠——反斜杠在正则里是特殊字符,必须用另一个反斜杠转义才能正确匹配;$:锚定到行的末尾,确保我们只删行尾的, \,不会误删行中间出现的相同字符;- 最后面的空内容表示把匹配到的部分直接删掉。
直接修改原文件(AIX sed没有GNU sed的-i选项)
如果确认预览结果没问题,要直接修改原文件的话,得借助临时文件中转(AIX的sed不支持直接原地修改):
sed '$s/, \\$//' test.txt > temp.txt && mv temp.txt test.txt
这样就能精准删掉最后一行末尾的, \啦。
内容的提问来源于stack exchange,提问作者HK2432
相关产品推荐
相关产品推荐

