使用 Bash 从 XML 文件中删除文本
Remove Text from XML File using Bash
我有一个 bash 脚本,它生成一个 xml 文件 (drivers_list.xml) 并且必须随后删除此行:
xmlns="http://feed.elasticstats.com/schema/nascar/series-v2.0.xsd"
通过浏览此页面,我找到了一些建议并尝试了,
sed -i '' "s/xmlns=\"http://feed.elasticstats.com/schema/nascar/series-v2.0.xsd\"//g" drivers_list.xml
不幸的是,当我 运行 它时,出现以下错误:
sed: 1: "s/xmlns="http://feed.el ...": bad flag in substitute command: 'f'
我该如何解决这个问题?
您必须转义所有斜杠(/
) 并使用两种类型的引号('
,"
):
sed -i 's/xmlns=\"http:\/\/feed.elasticstats.com\/schema\/nascar\/series-v2.0.xsd\"//g' drivers_list.xml
那么输出应该符合预期。
当然,使用这种方法您将无法捕捉到 xmlns='...'
定义 - 它们同样有效。
找到它 -- Delimiters in sed substitution
Sed can use any character as a delimiter.
In fact, it will automatically use the character following the `s` as a delimiter.
我有一个 bash 脚本,它生成一个 xml 文件 (drivers_list.xml) 并且必须随后删除此行:
xmlns="http://feed.elasticstats.com/schema/nascar/series-v2.0.xsd"
通过浏览此页面,我找到了一些建议并尝试了,
sed -i '' "s/xmlns=\"http://feed.elasticstats.com/schema/nascar/series-v2.0.xsd\"//g" drivers_list.xml
不幸的是,当我 运行 它时,出现以下错误:
sed: 1: "s/xmlns="http://feed.el ...": bad flag in substitute command: 'f'
我该如何解决这个问题?
您必须转义所有斜杠(/
) 并使用两种类型的引号('
,"
):
sed -i 's/xmlns=\"http:\/\/feed.elasticstats.com\/schema\/nascar\/series-v2.0.xsd\"//g' drivers_list.xml
那么输出应该符合预期。
当然,使用这种方法您将无法捕捉到 xmlns='...'
定义 - 它们同样有效。
找到它 -- Delimiters in sed substitution
Sed can use any character as a delimiter.
In fact, it will automatically use the character following the `s` as a delimiter.