小编Emi*_*fer的帖子

如何仅替换某些行上的字符?

我需要在 600 多个文件中用双引号和双引号替换单引号。我一天中的大部分时间都在阅读各种主题。我只知道一些基本的 shell 脚本命令并且不熟悉正则表达式,这使我受到了阻碍。

下面是我制作的有点通用的示例文件。

   some text KEYWORD_1 table name column = "string" AND column = "string"
    Additional text
          .
          .
          .
   some text KEYWORD_2 text 'text in quote' etc. 
Run Code Online (Sandbox Code Playgroud)

我只想用关键字更改 2 行的引号。我不能保证关键字总是第一行和最后一行。我需要我的解决方案来查找关键字并仅更改该行上的所有引号。

我尝试了一些我在这个论坛上的类似问题中找到的东西,包括关于 SED 的元数据。我试图找出如何使用这个命令:sed -i 's/foo\(.*baz\)/bar\1/' file。根据该主题的命令,“仅当同一行后面有 baz 时,才将 foo 替换为 bar。” 我的关键字不在开头的同一行后面,我无法让它为我工作。

我也试过ex -sc 'g/DEL/s/ALF/BRA/g' -cx file没有任何作用。我假设它不能从命令行执行。我真的不想打开 600 个文件中的每一个。

有一次我尝试过,grep KEYWORD_1 file | sed -i "s/'/\"/g" file
当然,这改变了文件中的所有引号,而不仅仅是一行。

我打赌解决方案很简单,我只是看不到它。我怎样才能做到这一点?

根据要求,我想要的输出是:

some text KEYWORD_1 table name column = 'string' AND column = …
Run Code Online (Sandbox Code Playgroud)

sed text-processing

5
推荐指数
2
解决办法
2266
查看次数

标签 统计

sed ×1

text-processing ×1