这是cat
命令的输出,我不知道在文件末尾要搜索的特殊字符是什么。如何删除bash中的这个特殊字符?
编辑:
这是实际的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>%
答案 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