Bash
如果使用 sed 找到關鍵字,則修改部分行?
如果在一行中找到特定關鍵字,我想修改一行。
CS_CODE, SM_NUM, PORT_NUM, DEV_PORT_NUM, DIRNUM, MAIN_DIRNUM, BILL_NO, ADR_NAME
在上述行中,如果存在“PORT_NUM”,則“BILL_NO”應替換為“NA”。僅應替換該行中存在的關鍵字。
我正在使用以下方法:
while IFS=$'\n' read -r line do if [[ $line == *"$string"* ]]; then < sed command to replace only keyword > fi done < "$file"
我怎樣才能做到這一點?
注意:’-i’ 擴展在我的 sed 版本中不起作用。
Menon,您已經得到瞭
sed
如何對整個文件進行操作的答案。如果您打算在單獨的行上工作,如您的程式碼框架中所示,那麼您不需要sed
(或任何其他外部程序),因為您的 shell 可能(參見下面的註釋)進行替換。假設string
您的程式碼中的變數包含(例如)值PORT_NUM
,變數中的替換line
可以通過以下方式完成:while read line do if [[ $line =~ $string ]]; then line=${line/BILL_NO/NA} fi done < "$file"
(注意:此替換適用於當代 shell,如 bash、ksh、zsh。)