shell脚本:使用sed向文件插入新行

shell脚本:使用sed向文件插入新行,shell,insert,sed,newline,Shell,Insert,Sed,Newline,目前,文件a.txt具有: #define ABC 我想将a.txt更改为: #define ABC #define DEF 我试过了 sed 's/#define ABC/#define ABC&\n#define DEF/g' a.txt > tmp/test.txt mv tmp/test.txt > a.txt 但它给了我#定义ABC#定义ABCn#定义EDF。在线尝试了多种解决方案,但不起作用。我的解决方案有什么问题?谢谢 使用Solaris 11引用链接中的

目前,文件a.txt具有:

#define ABC
我想将a.txt更改为:

#define ABC
#define DEF
我试过了

sed 's/#define ABC/#define ABC&\n#define DEF/g' a.txt > tmp/test.txt
mv tmp/test.txt > a.txt
但它给了我
#定义ABC#定义ABCn#定义EDF
。在线尝试了多种解决方案,但不起作用。我的解决方案有什么问题?谢谢


使用Solaris 11

引用链接中的第二个示例为您提供了一个解决方案

< a.txt sed "/ABC$/a \\
#define DEF
"
输出

#define ABC
#define DEF
或者上面链接中的第五个示例

< a.txt sed "/ABC$/s/$/\\
#define DEF/"

所以,读吧

引用链接中的第二个示例为您提供了一个解决方案

< a.txt sed "/ABC$/a \\
#define DEF
"
输出

#define ABC
#define DEF
或者上面链接中的第五个示例

< a.txt sed "/ABC$/s/$/\\
#define DEF/"
所以,读吧

GNU的代码:


$echo#define ABC | sed's/*/&\n#define DEF/' #定义ABC #定义定义 GNU代码:


$echo#define ABC | sed's/*/&\n#define DEF/' #定义ABC #定义定义 尝试以下方法:

$ echo '#define ABC' | sed '/ABC$/ a\
> #define DEF'
#define ABC
#define DEF
注意:在Oracle Solaris 10 9/10 s10s\u u9wos\u 14a SPARC上测试

$ echo '#define ABC' | sed '/ABC$/ a\
> #define DEF'
#define ABC
#define DEF

注意:在Oracle Solaris 10 9/10 s10s_u9wos_14a SPARC上测试

除了您的“&”之外,没有其他问题

试试这个

sed 's/#define ABC/#define ABC \n#define DEF/g' a.txt

#define ABC
#define DEF
我在我的unix机器上进行了测试,它运行良好

所以你的最终解决方案应该是这样的

sed 's/#define ABC/#define ABC \n#define DEF/g' a.txt
a.txt > tmp/test.txt
mv tmp/test.txt > a.txt

只有你的“&”是个问题

试试这个

sed 's/#define ABC/#define ABC \n#define DEF/g' a.txt

#define ABC
#define DEF
我在我的unix机器上进行了测试,它运行良好

所以你的最终解决方案应该是这样的

sed 's/#define ABC/#define ABC \n#define DEF/g' a.txt
a.txt > tmp/test.txt
mv tmp/test.txt > a.txt

标准Solaris sed需要一个换行符集,如下所示:

echo "#define ABC" | sed 's/#define ABC/#define ABC\
#define DEF/'

\n或\x0A不能在SunOS上工作。

标准Solaris sed需要如下设置换行符:

echo "#define ABC" | sed 's/#define ABC/#define ABC\
#define DEF/'

\n或\x0A不能在SunOS上工作。

@jm666我不知道这是如何回答我的问题的。相信我,我说过我已经尝试了很多解决方案,但都无法成功。这一条与我的情况最为接近:它对我不起作用,可能是因为我有#或者什么,我不知道。为什么不附加一行呢
echo'#define DEF'>>a.txt
@jm666我不知道这是如何回答我的问题的。相信我,我说过我已经尝试了很多解决方案,但都无法成功。这一条与我的情况最为接近:它对我不起作用,可能是因为我有#或者什么,我不知道。为什么不附加一行呢
echo'#define DEF'>>a.txt
您能解释一下吗?我试了两种方法,但都不管用。a、 txt保持不变。请告诉我代码有什么问题吗?这两个示例都将想要的行添加到输出中。您能解释一下吗?我试了两种方法,但都不管用。a、 txt保持不变。请告诉我代码有什么问题吗?两个示例都将想要的行添加到输出中。谢谢您的回答。我在Solaris上使用sed,因此上面的命令没有返回任何信息。有什么想法吗?谢谢你的回答。我在Solaris上使用sed,因此上面的命令没有返回任何信息。有什么想法吗?谢谢!这很有效。我基本上做了一些与您的解决方案类似的事情,让它编辑我的文件:
sed's/#define ABC/#define ABC\>#define DEF/'a.txt>new.txt
谢谢!这很有效。我基本上做了一些与您的解决方案类似的事情,让它编辑我的文件:
sed的/#define ABC/#define ABC\>#define DEF/'a.txt>new.txt
谢谢。我以前也试过同样的方法,但没用。最后,我想这是因为我在Solaris上使用了bash。显然,上面的代码适用于Linux上的bash,但不适用于Solaris。与sed\a(附加)相同。谢谢,如果我在Linux上的话,你的解决方案应该可以用。谢谢。我以前也试过同样的方法,但没用。最后,我想这是因为我在Solaris上使用了bash。显然,上面的代码适用于Linux上的bash,但不适用于Solaris。与sed\a(附加)相同。不过谢谢你,如果我在Linux上,你的解决方案应该可以用。