我是UNIX新手,正在练习shell脚本。我有一个应用程序,我需要字符串搜索和替换。读取一个字符串直到关键字,并用UNIX中的另一个字符串替换字符
文件1和文件2中有一些行。我有一个搜索关键字。
文件1:如果键词存在于文件1和文件然后在2文件2中的键字后的刺痛应与该串中文件1.
的关键词例如后更换:
abc def ghi jkl **unix** is the key
This file contains 3 lines and **unix** is the key
文件2:
This is a sample sentence **unix** in the second file
This is line 2 and **unix** the new line in the second file
的关键词是“UNIX”。这里UNIX后的字符串中的文件的文件1为“是关键”,所以“UNIX”之后的字符串中文件2即“在s第二个文件“应该替换为”是关键“。因此字符串读取和替换后的文件的输出应该像
文件1:
abc def ghi jkl **unix** is the key
This file contains 3 lines and **unix** is the key
文件2:
This is a sample sentence **unix** is the key
This is line 2 and **unix** is the key
我用单独以下命令
grep sed awk
但我无法弄清楚如何可以结合搜索和替换。 任何人都可以告诉我如何完成上述任何建议或帮助表示赞赏。
在此先感谢
你打算如何调用脚本? 'mangle unix file1 file2'?你如何处理'file1'包含一行'blah unix是关键'的情况,另一个说法是'blah blah unix是万能药'? 'file1'中的第二行(和后续行)的含义是什么?如果'file1'在第一行或任何行中不包含关键字会发生什么?据推测,'file2'中不包含关键字的行将保持不变?问题的规范尚未完整 - 这可能是您难以展示自己尝试过的原因的原因。 – 2015-02-08 17:37:29
这只是一个例子。考虑两个包含共同密钥的字符串。第一个关键字后面的字符串应该被第二个关键字后面的字符串替换。如果关键词不存在,请保持原样。我是unix的新手,所以我无法弄清楚方法。 – user168983 2015-02-08 17:49:18
最大的问题(在我看来)是“file1'中第二行和后续行的目的是什么?”我不知道你想用他们做什么。他们应该被忽略吗?是否应该验证它们以确保它们与第一行具有相同的结尾文本?你可能是一个新手,但这并不妨碍你思考。 – 2015-02-08 17:58:12