我是新来的脚本编写,所以这可能是一个'杜'的问题,也许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