我看了其他sed
頁面,我找不到一個在正則表達式搜索部分使用-i
的變量。我正試圖在文件myresolv.conf
中截取一條要求的行並獲取其行號。 5人在我的課都困:( 任何幫助是真棒在sed -i(正則表達式?)bash中使用變量
line=$(grep -n "$3" ./myresolv.conf | cut -d: -f1)
sed -i "$line" ./myresolv.conf
我看了其他sed
頁面,我找不到一個在正則表達式搜索部分使用-i
的變量。我正試圖在文件myresolv.conf
中截取一條要求的行並獲取其行號。 5人在我的課都困:( 任何幫助是真棒在sed -i(正則表達式?)bash中使用變量
line=$(grep -n "$3" ./myresolv.conf | cut -d: -f1)
sed -i "$line" ./myresolv.conf
看來你想從文件中刪除特定的行。你希望在你的line
變量中得到一個單一的行號(但要小心 - 如果你有多條匹配的行,你將得到一個數字列表,這將導致你的過程的其餘部分爆炸)。您遇到的問題是您正在輸入的命令sed
只是行號 - 您沒有指定sed
用於處理該行號的任何內容。所以,也許你想這樣的:
sed -i "${line}d" file.txt
如果我誤解了你的問題,而你不想刪除該線,但只是打印出來,然後更換d
與p
...
我想刪除行,但這不是爲我工作,我得到sed:-e表達式#1,字符2:未知的命令:' ' –
也許你的'行'變量包含的東西不是一個數字,然後...?或者你有'sed'的版本,需要'-i'的參數,比如'sed -i bak「3d」file.txt' ... – twalberg
我想,你的意思是remove line
當你說cut out line
。
嘗試使用grep
與-v
的選擇。我相信你不需要sed
這裏。
grep -v "$3" ./myresolv.conf
或者,如果你想刪除文件本身
排隊sed -i.bak "/$3/d" ./myresolv.conf
這是很好的使用-i
與.bak
overwirting更改之前創建備份文件。
最後有人回答真的有用。謝謝@jkshah –
當你說'切出線條'時,你的意思是'刪除線條'嗎? – jkshah
可能的重複[從文件中刪除特定的行而不使用sed或awk](http://stackoverflow.com/questions/19128876/remove-a-specific-line-from-a-file-without-using-sed -or-awk) – tripleee
我想使用sed dude –