Mr *_*erd -9 xml unix shell information-retrieval sed
我正在尝试从文件夹中的许多文件中删除多个XML标记.我试过sed,但它一次只能在一个文件上运行.
这是我用于从单个文件中删除的sed代码.调用包含多个文件的文件夹rcv1
.
sed -e 's/<[^>]*>//g' sk.xml
a.xml
b.xml
c.xml
d.xml
Run Code Online (Sandbox Code Playgroud)
我试图使用的代码是:
for file in *.xml do sed -e 's/v[^]*>//g' "$file"
Run Code Online (Sandbox Code Playgroud)
编辑:预先find ./ -type f -exec
与fedorqui的答案结合使用:
find ./ -type f -exec sed -i 's/<[^>]*>//g' {} \;
Run Code Online (Sandbox Code Playgroud)
fed*_*qui 21
如果您的sed
命令适用于给定文件,并且您希望对文件中指示的所有文件执行相同操作rcv1
,则只需循环浏览文件内容,如" 如何读取文件(数据流,变量)"行中所示 -按行(和/或逐场)?:
while IFS= read -r file
do
sed -e 's/<[^>]*>//g' "$file"
done < "rcv1"
Run Code Online (Sandbox Code Playgroud)
您可能希望对给定目录中的所有文件执行此操作,而不是从文件中读取它们.在这种情况下,使用循环遍历当前目录中的文件for
:
for file in *
do
sed -e 's/<[^>]*>//g' "$file"
done
Run Code Online (Sandbox Code Playgroud)
此外,如果您希望更改这些文件,可能需要使用-i
以便更改就地发生.也就是说,文件本身会被新版本修改.为安全起见,请说明sed -i.bak
创建了备份文件.
全部一起:
sed -i.bak -e 's/<[^>]*>//g' "$file"
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1175 次 |
最近记录: |