/fi/a
次は何をしますか?
sudo sed -i.bak '/fi/a #xrdp multiple users configuration \n xfce-session \n' /etc/xrdp/startwm.sh
「fi」を含む行を見つけて、その文字列を次の行に書き込むようです。残念ながら、「fi」のみを対象とするように見えますが、「profile」という単語を含むそのファイルの行にも適用されます。
このコマンドはここと他の多くの場所で推奨されます。
https://medium.com/@vivekteega/how-to-setup-an-xrdp-server-on-ubuntu-18-04-89f7e205bd4e
答え1
このコマンドはあなたが言ったものとまったく一致します。各項目に文字列を追加します。最初fi
1行で表示されます。でも見るだけでもfi
「プロ」にも似合いますフィリピン諸島ル"または"フィリピン諸島夕方」または「ビリフィリピン諸島することができます」またはその他を含むfi
。
これを防ぐには、単語の境界()でのみ一致するように指定できます\b
。 GNUの場合sed
(おそらく他のもの、\b
比較的移植可能):
$ cat file
profile
finite
verifiable
foo bar fi
$ $ sed '/\bfi\b/a #xrdp multiple users configuration \n xfce-session \n' file
profile
finite
verifiable
foo bar fi
#xrdp multiple users configuration
xfce-session
fi
ご覧のとおり、スタンドアロンバージョンのみが変更されました。したがって、元のコマンドを次のように変更できます。
sudo sed -i.bak '/\bfi\b/a #xrdp multiple users configuration \n xfce-session \n' /etc/xrdp/startwm.sh
sed
バージョンが不明ですがサポートされ\b
ている場合は、-E
次のこともできます。
sed -E '/(^| )fi( |$)/a #xrdp multiple users configuration \n xfce-session \n' file
しかし、私が知っている限り、ほとんどのsed実装はこれを処理できないため、ほとんど\n
確実にGNU sedが必要になります。
答え2
fi
1行でaを一致させるには、^
(行の先頭)と(行の終わり)を使用して$
固定できます.\n
文字列の前後の不要な空白文字を削除することもできます。
sudo sed -i.bak '/^fi$/a #xrdp multiple users configuration\nxfce-session\n' /etc/xrdp/startwm.sh