ファイルの特定の行の末尾にテキストを追加するには?

ファイルの特定の行の末尾にテキストを追加するには?

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

末尾の文字列を置き換えると、デフォルトの/印刷動作が抑制されます。

関連情報