特定の行の末尾にIPを入力してください。 [閉じる]

特定の行の末尾にIPを入力してください。 [閉じる]

同じパターンに従う次のfile.txtがあり、IPを追加してファイルの場所を修正したいと思います。

# gfhfhgfh
gfhfghgfhgfhgfh
MACs 
# access
USER CONSOLA *,!10.249.247.3,!10.249.245.65
/bin/false

ユーザーコンソールをユーザーとして含む行の末尾にIPを追加したいと思います。

 USER CONSOLA *,!10.249.247.4,!10.249.245.65,!10.249.245.90,

現在、ドキュメント全体にIPのみを追加できますが、以下を使用して特定のコード行に追加することはできません。

sed 's/\r\?$/,!10.10.11.1/' file.txt 

答え1

行の先頭(アンカー)で一致し、行の^終わり$(アンカー)の新しいテキストに置き換えます。

$ sed '/^USER CONSOLA/ s/$/,!10.10.11.1/' file.txt
# gfhfhgfh
gfhfghgfhgfhgfh
MACs 
# access
USER CONSOLA *,!10.249.247.3,!10.249.245.65,!10.10.11.1
/bin/false

ファイルに保存したいWindows / DOSスタイルのCRLF行末がある場合は、上記の内容を次のように修正してください。

sed '/^USER CONSOLA/ s/\r$/,!10.10.11.1\r/' file.txt

もしあなたならいいえDOSエンディングを維持するには、まずそれを削除するか、dos2unixsedでこれを実行する追加のコマンドを追加します。

sed -e 's/\r$//' -e '/^USER CONSOLA/ s/$/,!10.10.11.1/' file.txt

答え2

同じ効果を得るには、次の方法を使用します。

sed  "/USER CONSOLA/s/.*/&\,\!10.249.245.90,/g" filename

出力

# gfhfhgfh
gfhfghgfhgfhgfh
MACs
# access
USER CONSOLA *,!10.249.247.3,!10.249.245.65,!10.249.245.90,
/bin/false

関連情報