これが何をすべきか知っていますか?
grep -lr . | xargs sed -i '' -e '/ifcfg-wlan0/!s/wlan0/<name of the device>/g'
5つのスラッシュを持つコマンドを見たことがなく、sed
それに関する文書も見つかりません。
答え1
コマンドと条件だと思います。これは、「行が一致wlan0
しない限り、すべての項目を置き換えます」を意味します。または、より正確に言うと、「この行が一致する場合には置き換えないでください」を意味するため、拡張して一致しない行から置き換えてください。<name of the device>
ifcfg-wlan0
ifcfg-wlan0
wlan0
<name of the device>
ifcfg-wlan0
これは私のGNUに次のように文書化されている多くの理解可能な「アドレス」sed
、特に正規表現アドレスの1つです。man sed
sed
/正規表現/
正規表現 regexp に一致する行に一致します。マッチングは現在のパターン空間で行われ、次のコマンドを使用して変更できます
s///
。
!
次のステートメントを否定する方法もわかっている場合は、次の/ifcfg-wlan0/!s/wlan0/<name of the device>/g'
疑似コードに置き換えることができます。
unless /ifcfg-wlan0/ {
s/wlan0/<name of the device>/g
}
最後に、わかりやすくするためにいくつかのスペースを追加して実行します。
$ printf 'wlan0\nifcfg-wlan0\nwlan0\n'
wlan0
ifcfg-wlan0
wlan0
$ printf 'wlan0\nifcfg-wlan0\nwlan0\n' |
sed -e '/ifcfg-wlan0/ ! s/wlan0/<name of the device>/g'
<name of the device>
ifcfg-wlan0
<name of the device>