繁体   English   中英

使用SED修改文件的第n行

[英]Using SED to modify the nth line of a file

如果要在文件的第10行添加内容,该怎么做?

这是我想出的:

sed -ie '' "10s/^/new_content/g" file.txt

我不断收到消息“没有这样的文件或目录”

另外,如果我想用N + 1替换10并用变量$ VAR替换new_content,格式是否仍将相同?

VAR= $(cat fileA.txt)
sed -ie '' "`expr $N +1`s/^/$VAR/g" fileB.txt

谢谢你的帮助!!!

壳牌对间距很挑剔:

VAR= $(cat fileA.txt)

您不需要=后的空格。 实际上,除非fileA.txt只有一行,否则您也不需要分配。 为了使它能够正常工作,您必须使用反斜杠等使转义符转义,这既困难又不必要。

除非您使用的是古董(非POSIX)外壳,否则请使用内置算法:

sed -i.bak -e "$(($N + 1))r fileA.txt" fileB.txt

$(($N + 1))使shell评估算术表达式。 rsed读取了命名的文件。

[1addr]r file
在下一次尝试读取输入行之前,立即将文件内容复制到标准输出。 如果由于某种原因无法读取文件,它将被静默忽略,并且不会设置任何错误条件。

事实证明,我需要拆分-i-e

起作用的最终结果是:

        sed -i '' -e "10s/^/CONTENT/g" file.txt

或者在每次循环时将ns增加+1:

        sed -i '' -e "$((N + 1))s/^/CONTENT/g" ~/dance/heatlist/prep.txt

我仍然没有弄清楚如何使CONTENT成为变量$ CONTENT

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM