我是新來的腳本編寫,所以這可能是一個'杜'的問題,也許sed/awk不能這樣做,我需要將用戶輸入的文本行插入到文件中,但必須在特定的唯一行之後插入。有問題的線路,如「###插入新的在下面的輸入HERE」 我一直在使用:試圖理解sed只需要特定文本行的行號
sudo sed -i "9i$userinput from user" ~/filename;
成功地將用戶輸入加上額外的文本文件行「之後### INSERT NEW INPUT BELOW HERE「這恰好在第8行,所以我硬編碼爲9,但是,事實證明,其他腳本可能會在」### INSERT NEW INPUT BELOW HERE「之前添加或減去此文件中的行螺絲我的一切了......我怎麼可以識別與文本行的行號「###插入新的在下面的輸入HERE」,並將其分配給一個變量,這樣也許是這樣的:
sudo sed -i "$(linenumber + 1)i$userinput from user" ~/filename;
可能工作。
我已經試過:
line= "### INSERT NEW INPUT BELOW HERE";
linenum= sed -n '/$line/'= inputfile;
echo linenum;
和
linenum=$(awk 'NR == "$line"' ./inputfile)
echo $linenum;
連同幾個變化,但LINENUM保持爲空。
任何幫助或建議?
爲什麼不只是搜索'$ line'然後** **我的nsert userInput? – shellter 2014-12-13 03:54:59
@ shellter.From問題,似乎OP只想要該行的行號。 – D3Hunter 2014-12-13 03:57:59
這不是我如何解釋O.P.的最終問題。是的,O.P.想要可變的行號,我提供了一個替代方案,只需要一次文件傳遞。我的意思是看GlennJackman的答案。祝你們好運! – shellter 2014-12-13 04:02:24