繁体   English   中英

如何在 Linux 中为多个文件的某一行末尾添加一个数字?

[英]How to add a number at the end of a certain line for multiple files in Linux?

我有一个文件列表,文件名是file1.txt, file2.txt, ..., file100.txt

在每个文件中,内容如下:

abcd

efgh

ijkl

data

wxyz

如何在 Linux 中为多个文件的第 4 行末尾添加一个数字,以便file1.txt的新内容为:

abcd

efgh

ijkl

data1

wxyz

file2.txt的内容是:

abcd

efgh

ijkl

data2

wxyz

等等。

通常有很多方法可以在 Bash 中实现任何目标,具体取决于问题的确切性质。 然而,这条线似乎接近你所要求的:

printf '%s\0' {1..100} | xargs -0 -I{} sed -i 4s/$/{}/ file{}.txt

printf命令与大括号扩展一起使用以创建一个字符串,该字符串由由空字节分隔的数字1100组成。 printf是一个非常有用的命令,有时比echo命令更好地遵循最少惊喜的原则,恕我直言。)

然后使用xargs命令为每个命令运行一个命令。 -0标志告诉它输入项目由空字节(而不是空格)分隔, -I{}参数告诉它搜索命令并用项目替换字符串{} xargs的命令是sed -i 4s/$/{}/ file{}.txt 4是指向文件第 4 行的地址。 s/$/{}/匹配行尾标记并将匹配替换为右侧斜杠之间的值。 file{}.txt显然是指第{}个文件。

这样做的结果是运行以下命令:

sed -i 4s/$/1/ file1.txt
sed -i 4s/$/2/ file2.txt
...
sed -i 4s/$/100/ file100.txt

这对于所问的问题非常具体,因为执行的是这些确切的命令,因此如果您的情况实际上比这更普遍,请买家注意。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM