Bash 在shell脚本中编辑/保存文件

Bash 在shell脚本中编辑/保存文件,bash,shell,vim,pipe,Bash,Shell,Vim,Pipe,我认为这个问题不可能解决,我不擅长 使用我的一个shell脚本,生成了一个包含数百万行的文件。 在将其与其他命令一起使用之前,我需要编辑此文件。我需要在每行前面添加一个文本,例如“txt” 我现在做的是,, -生成文件后退出shell脚本 -在vim中打开它 -使用命令:g/^/s//txt/g在每行的开头添加txt -保存文件 -在剩余的shell脚本中使用它 我相信会有一个更有效的方法,我不知道。感谢您的帮助。正如一些人在评论中所说的,您可以使用GNUsed来实现这一点: sed -i 's

我认为这个问题不可能解决,我不擅长

使用我的一个shell脚本,生成了一个包含数百万行的文件。 在将其与其他命令一起使用之前,我需要编辑此文件。我需要在每行前面添加一个文本,例如“txt”

我现在做的是,, -生成文件后退出shell脚本 -在vim中打开它 -使用命令:g/^/s//txt/g在每行的开头添加txt -保存文件 -在剩余的shell脚本中使用它


我相信会有一个更有效的方法,我不知道。感谢您的帮助。

正如一些人在评论中所说的,您可以使用GNU
sed
来实现这一点:

sed -i 's/^/txt/' yourfile.txt

-i
代表
-in-place
并编辑您的文件,而不是打印到标准输出。

正如一些人在评论中所说,您可以使用GNU
sed
来完成以下操作:

sed -i 's/^/txt/' yourfile.txt

-i
代表
-in-place
并编辑您的文件,而不是打印到标准输出。

正如一些人在评论中所说,您可以使用GNU
sed
来完成以下操作:

sed -i 's/^/txt/' yourfile.txt

-i
代表
-in-place
并编辑您的文件,而不是打印到标准输出。

正如一些人在评论中所说,您可以使用GNU
sed
来完成以下操作:

sed -i 's/^/txt/' yourfile.txt


-i
代表
-in-place
并编辑您的文件,而不是打印到标准输出。

使用
sed's/^/txt/'
。请参见
mansed
。do
sed's/^/txt/g'
@qqibrow
g
标志对于这样的锚定模式毫无意义。每行只能匹配一次。@EtanReisner谢谢!我明白了。我想你很幸运,vim命令正在做你想做的事情。该
s//
命令的
//
部分正在重新使用上一个搜索模式(这恰好是与
:g
一起使用的
/^/
模式中的
^
。以防万一您没有意识到那里发生了什么。请使用
sed's/^/txt/'
。请参见
man-sed
。do
sed's/^/txt/g'
@qqibrow
g
标志对于这样的锚定模式没有意义。它只能匹配一次每行。@EtanReisner谢谢!我知道了。我想你很幸运,vim命令正在做你想做的事情。该命令的
//
部分正在重新使用上次的搜索模式(这恰好是与
:g
一起使用的
/^/
模式中的
^
。以防万一您没有意识到那里发生了什么。请使用
sed's/^/txt/'
。请参见
man-sed
。do
sed's/^/txt/g'
@qqibrow
g
标志对于这样的锚定模式没有意义。它只能匹配一次每行。@EtanReisner谢谢!我知道了。我想你很幸运,vim命令正在做你想做的事情。该命令的
//
部分正在重新使用上次的搜索模式(这恰好是与
:g
一起使用的
/^/
模式中的
^
。以防万一您没有意识到那里发生了什么。请使用
sed's/^/txt/'
。请参见
man-sed
。do
sed's/^/txt/g'
@qqibrow
g
标志对于这样的锚定模式没有意义。它只能匹配一次每行。@EtanReisner谢谢!我知道了。我想你很幸运,vim命令正在做你想做的事情。该命令的
//
部分正在重新使用上次的搜索模式(这恰好是与
:g
一起使用的
/^/
模式中的
^
。以防万一您没有意识到那里发生了什么。请注意
-i
是GNUism或BSDism。它不是POSIX。请注意
-i
是GNUism或BSDism。它不是POSIX九、 请注意,
-i
是一个GNUism或BSDism,它不是POSIX。