如果我想将内容添加到文件的第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
感谢您的帮助!!!
答案 0 :(得分:0)
Shell对间距很挑剔:
VAR= $(cat fileA.txt)
您不希望=
之后的空格。实际上,除非fileA.txt
只有一行,否则您也不希望分配。你必须使用反斜杠等来逃避换行,才能使它工作,这既困难又不必要。
除非您使用的是古董(非POSIX)shell,否则请使用内置算法:
sed -i.bak -e "$(($N + 1))r fileA.txt" fileB.txt
$(($N + 1))
有shell评估算术表达式。 r
已sed
读取名为的文件。
[1addr]r file
在下次尝试读取输入行之前,立即将文件内容复制到标准输出。如果由于任何原因无法读取文件,则会以静默方式忽略该文件,并且不会设置错误条件。
答案 1 :(得分:0)
事实证明我需要拆分-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