web-dev-qa-db-ja.com

ファイルの特定の行の最後にテキストを追加する方法は?

ファイルの最終行32にユーザー名を追加する必要がある場合、どうすればよいですか?

Googleでsedを使用して行の先頭にテキストを追加する方法を見つけることはできますが、可能であれば、末尾または途中にテキストを追加する方法がわかりません。

3
TrevorKS

テキストを行末($) このような:

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

行の中央にテキストを挿入するには、行構造に関するいくつかの情報が役立ちます。

7
Renardo

試してください:

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

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
3
Kusalananda

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

末尾の/置換文字列の場合、デフォルトの印刷動作が抑制されます。

0
Jeff Schaller