【问题标题】:How to use sed to replace "word{word" or "word}word"如何使用 sed 替换“word{word”或“word}word”
【发布时间】:2020-04-30 05:47:12
【问题描述】:

我尝试编写一个 bash 脚本来替换以下内容:

{"Ausstattung":"

"},{"Ausstattung":"

"}

在子文件夹的所有 CSV 文件中。

这是我目前使用的:

function suche_und_ersetze() { // search and replace
   LC_ALL=C find ./subfolder -type f ! -name ".DS_Store" -exec sed -i "" "s/${OLD}/${NEW}/g" {} \; 
}

OLD='{\"Ausstattung\":\"' 
NEW="#" 
suche_und_ersetze

OLD='\"},{\"Ausstattung\":\"'
NEW=" #" 
suche_und_ersetze

OLD='\"}' 
NEW="" 
suche_und_ersetze

不知怎的,我无法让它工作。该脚本正在替换没有"}, 的文本,但不是上面列出的单词。

【问题讨论】:

  • 您需要将 OLD 和 NEW 变量作为参数传递给您的函数。然后可以使用$1$2 调用它们。 Bash 从上到下,你的suche_und_ersetze 函数不知道${OLD}${NEW} 是什么
  • 谢谢@SimonC-ReinstateMonica。它正在与其他文本一起使用,f.ex。只有Ausstattung。但不是括号...
  • 我做了一些语言润色和一点英文翻译以提高可读性。

标签: bash macos shell sed


【解决方案1】:

对不起, 我应该用编辑器查看 csv:

这是 ""},{""澳大利亚统计局"":"" 并不是 "},{"Ausstattung":"

在 sed 中你甚至不需要转义 " 如果你使用 '

【讨论】:

  • 请尝试改写您的答案,deepl.com 可能会对您有所帮助。以目前的形式,很难猜出您的建议。
猜你喜欢
  • 1970-01-01
  • 2016-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多