如何在unix中替换文件中特定行的单词

use*_*751 -2 unix bash replace

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

mik*_*yra 6

一种可能性是使用sed:

sed '/^123/ s/0/1/' my_course
Run Code Online (Sandbox Code Playgroud)
  • 在第一/../部分中,您只需要为^123从123开始的行指定要查找的模式.

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

请注意,默认情况下,替换后文件将写入stdout.你可能想要:

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

  • 使用-e开关sed 执行"就地"替换

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

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

sed "/^$input/ s/0/1/" my_course
Run Code Online (Sandbox Code Playgroud)