如何将文本附加到文件某一行的末尾?

如何将文本附加到文件某一行的末尾?

如果我需要将用户名附加到文件的末尾第 32 行,我该怎么做?

我可以在 Google 上找到如何将文本添加到行的开头sed,但我无法弄清楚如何将其附加到末尾,甚至中间(如果可能的话)。

答案1

您可以用文本替换行尾 ( $),如下所示:

sed -e '32s/$/your_text/' file

要在行中间插入文本,有关行结构的一些信息将很有用。

答案2

尝试:

sed  '32s,$,SOMETHING TO ADD,' FILE

答案3

使用awk

awk -v username='some username' -v line=32 'NR == line { $0 = $0 username } 1' file

要将用户名插入到行的中间,人们必须更多地了解文件中的行是什么样的。

如果用户名和行是变量:

awk -v username="$username" -v line="$line" 'NR == line { $0 = $0 username } 1' file

如果要在用户名前插入空格:

awk -v username="$username" -v line="$line" 'NR == line { $0 = $0 " " username } 1' file

答案4

使用ed

$ seq 100 > 100file
$ username=jeff
$ ed -s 100file <<< $'32s/$/'"$username"$'/\nw\nq'
$ sed -n 28,34p 100file
28
29
30
31
32jeff
33
34

替换字符串的尾随/会抑制默认打印行为。

相关内容