如果我需要将用户名附加到文件的末尾第 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
替换字符串的尾随/
会抑制默认打印行为。