我已经在这里研究了其他问题,但还没有找到适合我的问题。我正在尝试从文件中选择一个特定的行,并用另一个字符串替换该行上的字符串。所以我有一个名为my_course的文件。我正在尝试修改my_course中以“123”开头的一行。在那一行,我想用“1”替换字符串“0”。帮助
答案 0 :(得分:6)
一种可能性是使用 sed :
sed '/^123/ s/0/1/' my_course
在第一个/../
部分中,您只需为从123开始的行指定您要查找的模式^123
。
在s/from/to/
部分,您已指定要执行的替换。
请注意,默认情况下,替换后文件将写入stdout。你可能想:
使用... > my_new_course
使用-e
开关进行“就地”替换
如果您使用的是破坏性原位变体,除了保留原始版本的给定EXTENSION版本以防出现问题之外,您可能还需要使用-iEXTENSION
。
修改强>
要使用存储在变量中的前缀匹配所需内容,您必须使用双引号"
将sed脚本括起来,因为使用单个qoutes '
将阻止变量扩展:
sed "/^$input/ s/0/1/" my_course
答案 1 :(得分:3)
你试过这个: sed -e'[line] s / old_string / new_string /'my_course
PS:不应该使用[],是否只是要清楚地说明你应该把数字放在“s”之前。
干杯!
事实上,在这种情况下-e没有必要,我只能写
sed '<line number>s/<old string>/<new string>/' my_course