如何在文件末尾删除此特殊字符

时间:2020-03-17 04:31:39

标签: bash macos terminal

这是cat命令的输出,我不知道在文件末尾要搜索的特殊字符是什么。如何删除bash中的这个特殊字符? enter image description here

编辑

这是实际的xml文件(我只是复制粘贴):

<?xml version="1.0" encoding="UTF-8"?>
<Package xmlns="http://soap.sforce.com/2006/04/metadata">
  <types>
    <name>ApexClass</name>
    <members>CreditNotesManager</members>
    <members>CreditNotesManagerTest</members>
  </types>
  <version>47.0</version>
</Package>%

4 个答案:

答案 0 :(得分:2)

目前尚不清楚文件中%(百分号)的结尾情况;使用sed可以轻松删除:

sed -i '' 's/\(</.*>\)%.*/\1/g' file.xml

这将删除百分比并重新保存文件。如果要进行试运行,请忽略-i ''部分,因为这会告诉sed在线保存文件。

As mentioned in the comments,有很多方法可以做到。只要确保您没有删除要保留的东西即可。

答案 1 :(得分:1)

如果仅在最后一行,则应该可以。使用ed(1)

printf '%s\n' '$s/%//' w | ed -s file.xml

答案 2 :(得分:1)

如果不需要保存更改,则可以使用grep:

grep -v "%" <file.xml

这将使用grep及其反向匹配标志-v。此方法将删除字符%的所有实例,并将结果打印到STOUT。 <字符是一种告诉grep您正在谈论哪个文件的方法。

编辑:实际上您甚至不需要重定向,所以:

grep -v "%" file.xml

答案 3 :(得分:1)

这实际上是zsh的功能,而不是bash。 要禁用它,unsetopt prompt_cr prompt_sp 出现反向提示字符表示该行在最后的ascii换行符(换行符)之前具有文件结尾。 How to remove this special character at the end of the file