我想从一个中等大小的文本文件集合中删除所有看起来像“ @n”,“ @ R”等的颜色代码。
因此,在名为“ remove_cc”的文件中,我编写了以下内容:
sed -ie 's/@r//g' $1
sed -ie 's/@g//g' $1
sed -ie 's/@y//g' $1
sed -ie 's/@b//g' $1
sed -ie 's/@m//g' $1
sed -ie 's/@c//g' $1
sed -ie 's/@n//g' $1
sed -ie 's/@R//g' $1
sed -ie 's/@G//g' $1
sed -ie 's/@Y//g' $1
sed -ie 's/@B//g' $1
sed -ie 's/@M//g' $1
sed -ie 's/@C//g' $1
sed -ie 's/@N//g' $1
sed -ie 's/@W//g' $1
sed -ie 's/@K//g' $1
无论如何,如果我像这样使用脚本,该脚本将发挥出色的作用:./remove_cc file.txt
但是,如果我键入./remove_cc *.txt
一个包含许多要在其中运行脚本的txt文件的文件夹,它将无法执行任何操作。./remove_cc *
同样无效。
有没有一种方法可以解决这个问题呢?
当您键入时./remove_cc *
,shell将其更改为./remove_cc file1.txt file2.txt file3.txt etc
,然后以这种方式运行脚本。您的脚本仅查看$1
第一个参数(file1.txt)。
最通用的方法是依次遍历每个参数。"$@"
扩展到所有参数的列表,我们可以for
用来遍历它们。
for n in "$@" ; do
sed -ie 's/@r//g' "$n"
...
done
在这种情况下,由于sed
将使用多个文件名,因此您可以简化以下操作:
sed -ie 's/@r//g' "$@"
请注意,编写Shell脚本时,注意引号很重要。例如,如果没有引号,该脚本将无法在名为的文件上运行My Text File.txt
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句