【问题标题】:sed replace the last characters of the last line on AIX?sed 替换AIX 上最后一行的最后一个字符?
【发布时间】:2020-06-30 18:57:48
【问题描述】:

我有这种类型的 .txt 文件:

xxxxxxxxxxxxxxxxx, \
xxxxxxxxxxxxxxxxx, \
xxxxxxxxxxxxxxxxx, \
xxxxxxxxxxxxxxxxx, \
xxxxxxxxxxxxxxxxx, \
xxxxxxxxxxxxxxxxx, \
xxxxxxxxxxxxxxxxx, \
xxxxxxxxxxxxxxxxx, \
xxxxxxxxxxxxxxxxx, \
xxxxxxxxxxxxxxxxx, \
xxxxxxxxxxxxxxxxx, \
xxxxxxxxxxxxxxxxx, \
xxxxxxxxxxxxxxxxx, \
xxxxxxxxxxxxxxxxx, \
xxxxxxxxxxxxxxxxx, \

如果最后一行,我想删除, \

xxxxxxxxxxxxxxxxx, \
xxxxxxxxxxxxxxxxx, \
xxxxxxxxxxxxxxxxx, \
xxxxxxxxxxxxxxxxx, \
xxxxxxxxxxxxxxxxx, \
xxxxxxxxxxxxxxxxx, \
xxxxxxxxxxxxxxxxx, \
xxxxxxxxxxxxxxxxx, \
xxxxxxxxxxxxxxxxx, \
xxxxxxxxxxxxxxxxx, \
xxxxxxxxxxxxxxxxx, \
xxxxxxxxxxxxxxxxx, \
xxxxxxxxxxxxxxxxx, \
xxxxxxxxxxxxxxxxx, \
xxxxxxxxxxxxxxxxx

在 AIX 上我尝试:

sed "s/\//" test.txt 

但它不起作用......

你能帮我吗?

【问题讨论】:

  • 使用sed '$ s|, \\||' test.txt > output.txt,见demo

标签: shell unix sed aix


【解决方案1】:

你可以使用

sed '$ s|, \\||' test.txt > output.txt

请参阅online sed demo

$ 表示仅在最后一行运行 seds|, \\|| 将出现的一次 , \ 替换为空字符串。

【讨论】:

    【解决方案2】:

    如果您想直接修改文件,请使用 ed 而不是 sed(尤其是在 AIX 上,因为我很确定它的 sed 没有实现非标准的 -i 选项就地编辑,这意味着您必须将其输出保存到一个临时文件中,然后将 mv 保存为原始名称):

    printf '%s\n' '$s/, \\$//' w | ed -s test.txt
    

    【讨论】:

      猜你喜欢
      • 2021-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多