-1

我在这里研究了其他问题,但还没有真正找到适合我的问题。我正在尝试从文件中选择特定行并将该行上的字符串替换为另一个字符串。所以我有一个名为 my_course 的文件。我正在尝试修改 my_course 中以“123”开头的一行。在那一行我想用“1”替换字符串“0”。帮助?

4

2 回答 2

6

一种可能性是使用sed

sed '/^123/ s/0/1/' my_course
  • 在第一/../部分中,您只需指定要查找^123以 123 开头的行的模式。

  • s/from/to/您已指定要执行的替换的部分中。

请注意,默认情况下,替换后文件将被写入标准输出。你可能想要:

  • 使用重定向输出... > my_new_course

  • -e使用切换到 sed执行“就地”替换

如果您正在使用破坏性的就地变体,您可能还想使用-iEXTENSION原始版本的给定 EXTENSION 副本,以防出现问题。

编辑: 要与存储在变量中的前缀匹配所需的内衬,您必须用双引号将 sed 脚本括起来",因为使用单个 qoutes'将防止变量扩展:

sed "/^$input/ s/0/1/" my_course
于 2013-03-26T20:33:28.097 回答
4

你试过这个: sed -e '[line]s/old_string/new_string/' my_course

PS:不应该使用 [ ] ,只是为了说明您应该将数字放在“s”之前。

干杯!

其实这种情况下的 -e 不是必须的,我可以直接写

sed '<line number>s/<old string>/<new string>/' my_course
于 2013-03-26T20:34:11.690 回答