パターンを一致させた後に次の行を編集し、存在しない場合はその行を追加する方法

パターンを一致させた後に次の行を編集し、存在しない場合はその行を追加する方法

2回繰り返されるファイルの内容を変更しようとしており、同じファイルの2番目の内容に追加の行を追加したいと思います。

サンプルファイル

User YOURNAME
IdentityFile ~/.ssh/YOURKEY

.
.
.
User YOURNAME
Installing
Installing

スクリプト実行後のサンプル出力

User adminuser
IdentityFile ~/.ssh/id_rsa

.
.
.
User adminuser
IdentityFile ~/.ssh/id_rsa
Installing
Installing

次のコマンドを変更しuserて使用できますYOURKEYsed

`sed- i s/"YOURNAME/adminuser"/g /root/.ssh/config`
`sed -i 's/YOURKEY/id_rsa/g' ff1`

IdentityFile ~/.ssh/id_rsaただし、次の行を挿入できません。

編集済み

追加情報は、****User adminuser行の先頭にスペースがあることです。これらのファイルは毎日同期されるため、IdentityFile行を削除することはできません。同期後に置き換えられます。

最終編集は必要に応じて行われました。

perl -i -ne 'next if /IdentityFile/; 
            s#YOURNAME#adminuser\n    IdentityFile ~/.ssh/id_rsa#; 
            print' filename

ベストアンサー1

すべてのケースを削除しIdentityFileて明示的に再追加してください。

$ perl -i -ne 'next if /IdentityFile/; 
            s#YOURNAME#adminuser\nIdentityFile ~/.ssh/id_rsa#; 
            print' file
$ cat file
User adminuser
IdentityFile ~/.ssh/id_rsa

.
.
.
User adminuser
IdentityFile ~/.ssh/id_rsa
Installing
Installing

next if /IdentityFile/一致する行をスキップしますIdentityFiles#YOURNAME#adminuser\nIdentityFile ~/.ssh/id_rsa#すべてのインスタンスは、 newline および line に置き換えられます。最後に、すべての行を印刷します。YOURNAMEadminuserIdentityFileprint

おすすめ記事