从文本文件中删除双引号字符串?

时间:2017-06-09 05:03:42

标签: bash shell vim sed sh

我正在处理一些文本文件,我必须删除一个特定的字符串

ex: "1234_NAME=TRUE", (including double quotes and comma) 

如果我通过

,使用Vim编辑器
:%s/"1234_NAME=TRUE",//g

但是这样我会手动做。但我希望通过使用一些脚本来自动完成这项工作。

我尝试使用sed工具,但失败了。

sed 's/"1234_NAME=TRUE",//g' hello.txt

我不是脚本专家。我知道命令不正确。上述命令的解决方案是什么。

还有一个问题:

我们可以添加一个小循环来逐个接收目录中的所有文本文件并删除字符串,而不是手动传递文件名。

@codeforester建议的答案需要一些修复:

for file in *.txt
do
   [[ -f "$file" ]] || continue 
分号就是问题。

感谢@SlePort的回答。

此致

GBiradar

2 个答案:

答案 0 :(得分:2)

你的命令是正确的。要遍历文件,可以使用简单的循环:

for file in *.txt; do          # assuming your files are have .txt extension, modify accordingly
  [[ -f "$file" ]] || continue # skip if not a regular file
  sed 's/"1234_NAME=TRUE",//g' "$file" > "$file.modified" && mv "$file.modified" "$file"
  # you can also use the `-i` flag to make a backup of the file and then overwrite the original
  # `-i ''` will skip the backup and just overwrite the file
  # sed -i .bak 's/"1234_NAME=TRUE",//g' "$file"
done

在运行上述代码之前,请确保备份文件。

答案 1 :(得分:2)

这可能对您有用:

sed -i.bak 's/"1234_NAME=TRUE",//g' *.txt
  • -i 到位正在编辑
  • .bak:备份文件的扩展名