在每行开头使用bash命令添加一个命令

12 浏览
0 Comments

在每行开头使用bash命令添加一个命令

如何在每一行的开头添加一个命令的例子 -

我的文件包含以下文本 -

abc
efg
hij

所以我想添加这个 sed -n '/^<<>>/p',即

sed -n '/^<<>>/p' abc
sed -n '/^<<>>/p' efg
sed -n '/^<<>>/p' hij

我尝试运行这个命令

sed -i 's/^/sed -n '/^<<>>/p'' test.txt 但是它没有起作用。

有人可以帮忙吗?

0
0 Comments

问题的原因是需要在每一行的开头添加一个bash命令,并且希望能够使用更好的方式来替代\x27

解决方法是使用awk命令,将每一行的内容作为参数传递给print函数,并在print函数中使用'来输出字符串。最终生成的字符串是sed -n '/^<</,/^>>/p'加上每一行的内容。

另外,还有一种解决方法是使用sed命令的-i选项,将^替换为sed -n '/^<</,/^>>/p',这样可以直接修改原始文件,而不需要创建一个新文件。

完整的解决方法如下所示:

$ cat test

abc

def

ghi

$ awk '{print "sed -n \x27/^<</,/^>>/p\x27 " $0}' test

sed -n '/^<</,/^>>/p' abc

sed -n '/^<</,/^>>/p' def

sed -n '/^<</,/^>>/p' ghi

感谢User123的建议,可以使用sed命令的-i选项来替代生成新文件的步骤,具体命令如下:

$ sed -i "s#^#sed -n '/^<</,/^>>/p' #" test.txt

以上就是解决问题的完整过程。

0