我是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