Bash 在unix中,如何替换文件中特定行的单词
我在这里研究了其他问题,但还没有找到一个适合我的。我试图从文件中选择一行,并用另一个字符串替换该行上的字符串。所以我有一个名为my_course的文件。我试图修改我的课程中以“123”开头的一行。在那一行,我想用“1”替换字符串“0”。帮助?一种可能是使用sed:Bash 在unix中,如何替换文件中特定行的单词,bash,unix,replace,Bash,Unix,Replace,我在这里研究了其他问题,但还没有找到一个适合我的。我试图从文件中选择一行,并用另一个字符串替换该行上的字符串。所以我有一个名为my_course的文件。我试图修改我的课程中以“123”开头的一行。在那一行,我想用“1”替换字符串“0”。帮助?一种可能是使用sed: sed '/^123/ s/0/1/' my_course 在第一部分中,您只需为以123开头的行指定要查找的模式 在s/from/to/部分中,您已指定要执行的替换 请注意,默认情况下,替换后文件将写入标准输出。您可能希望:
sed '/^123/ s/0/1/' my_course
- 在第一部分中,您只需为以123开头的行指定要查找的模式
- 在
部分中,您已指定要执行的替换s/from/to/
- 使用
…>我的新课程
- 使用切换至sed的
开关执行“就地”替换-e
-iEXTENSION
,此外还需要保留一份原始版本的给定扩展名副本,以防出现问题
编辑:
要匹配存储在变量中的前缀所需的行,您必须用双引号括住sed脚本“
,因为使用单个qoutes”
将阻止变量扩展:
sed "/^$input/ s/0/1/" my_course
你试过这个吗:
sed-e'[line]s/old_string/new_string/“我的课程”
注:不应该使用[],只是为了明确你应该把数字放在“s”之前
干杯
事实上,在这种情况下,-e是没有必要的,我可以只写
sed '<line number>s/<old string>/<new string>/' my_course
sed的//“我的课程”
向我们展示您尝试过的内容。我无法让它工作。我使用sed'/^$input/s/0,/1',我的课程$input包含特定行的第一个单词。这是因为0是字符串的一部分,而不是字符串本身。否,问题与您使用的引用字符有关。将阻止bash扩展$input。必须在表达式周围使用另一对“
”,才能展开$input:“/^$input/s/0/1/”
。不要忘记替换模式中的结束斜杠/
,如您发布的示例所示。我收到一个错误,没有与搜索行相关的文件或目录。。。它说没有以$input开头的行,但有hanks,但在这种情况下,我不能使用行号,因为我的程序将修改文本文档,行号不会保持不变