我在本主题中写有问题。 路径/ root / filetoadd下的文件具有特殊字符* *> /和换行符。该文件大约有20行。
我想将此文件添加到特定行下的另一个文件中。
这是我现在没做的事。
linenumber=`awk -v line='<xyz *>' '$0 == line {print NR}' /etc/folders/filewithsomedata`
(this gives me line 162 thats correct, there I want to place another file)
content=`cat /root/filetoadd`
sed -i "${linenumber} i \ ${content}" /etc/folders/filewithsomedata
最后一行给我错误,因为我上面提到的文件包含特殊字符和换行符。您知道如何添加此文件以保留所有这些新行和字符的原始内容吗?
答案 0 :(得分:1)
您使事情变得太复杂了。使用awk时,您永远不需要sed。只需这样做:
awk -v line='<xyz *>' '
NR==FNR { add = add $0 ORS; next }
{ print }
$0 == line { printf "%s", add }
' /root/filetoadd /etc/folders/filewithsomedata > tmp &&
mv tmp /etc/folders/filewithsomedata