linux 如何在文件的每一行使用sed命令?

ukdjmx9f  于 2023-03-07  发布在  Linux
关注(0)|答案(3)|浏览(120)
sed -i -e '/line/a\/to be added/' argument

1.参数是一个文件的每一行[这些行有多个文本文件的路径]。我可以在linux终端中使用foreach吗?还有什么其他选项?
1.我尝试了下面的xargs方法,但是没有起作用xargs -a file_name -I{} -d '\n' sed -i -e '/line/a/to be added/' {}我在上面哪里出错了?
例如:file.txt包含各种文件的路径-每行一个,我想对file.txt中存在的所有文件应用sed命令

a8jjtwal

a8jjtwal1#

这可能对您有用(GNU parallel和sed):

parallel -q sed -i '/line/a\/to be added/' :::: argument

这将在名为argument的文件中的每个包含line的行后面附加一行/to be added

ztigrdn8

ztigrdn82#

这个问题更多地是关于如何在bash中使用foreach循环从文件中逐行读取:
您可以使用while read执行此操作,并使用< file重定向文件。
下面是一个例子:

while read line; do
  sed -i -e '/line/a\/to be added/' $line
done < argument

argument是文本文件,就像在问题中一样。

ozxc1zmp

ozxc1zmp3#

您可以将sed命令添加到该文件中并从该文件执行
使用GNU sed e选项,该选项执行在模式空间中找到的命令,并将模式空间替换为输出。

$ sed  's~^~sed -i.bak "/line/a\/to be added/e" ~' input_file

或者

$ sed  's~^~sed -i.bak "/line/a\/to be added/" ~' input_file | sh

相关问题