1

/etc/fstab 編集したい行:

/dev/appvg/home         /home     ext3    defaults        0 0

デフォルト列の後ろに「、nodev」を挿入するようにsedを取得するにはどうすればよいですか?

「デフォルト」の前に挿入する別の投稿でこのコマンドを見つけましたが、後に挿入する方法がわかりません:

sed -ie 's:\(.*\)\(\s/home\s\s*\)\(\w*\s*\)\(\w*\s*\)\(.*\):\1\2\3nodev,\4\5:' /etc/fstab

これは私にこれを与えます:

/dev/appvg/home         /home     ext3    nodev,defaults  0 0

これは私がそれをどのように見せたいかです:

/dev/appvg/home         /home     ext3    defaults,nodev  0 0

出来ますか?私はsedが初めてです...

4

3 に答える 3

5

これがまさにあなたが変更したいものであると仮定すると、あなたの質問に対する最も簡単な答えは次のとおりです。

sed -ie '/^\/dev\/appvg\/home/ s/defaults/defaults,nodev/' /etc/fstab

これは、(^) で始まる行を ^/dev/appvg/home と一致させ、次のコマンドをそれに適用することを意味します。この場合、次のコマンドは「change defaults to defaults,nodev」です。

変更を行うために提案したコマンドを変更する場合は、次のようにします。

sed -ie 's:\(.*\)\s\(/home\)\s\s*\(\w*\)\s*\(\w*\)\s*\(.*\):\1 \2 \3 \4,nodev \5:' /etc/fstab

最後の 2 つの ':' 文字の間の \1、\2 などは置換マーカーであり、式の最初の部分から一致する括弧の内容を置き換えることを示しています。\s が一致する式のどこにあるかを変更すると、置換で単語 (\w) 文字のみが取得され、スペース (\s) 文字は取得されません。このため、結果の文字列に独自のスペースを挿入する必要があります。

于 2013-10-02T22:23:20.710 に答える
1

も使用できますawk。通常、Linux ではdefaults、ファイルの 4 列目に含まれ/etc/fstabます。行に が含まれている場合にのみ、それを使用して印刷できますdefault

awk '/defaults/{$4="defaults,nodev"}{print}' /etc/fstab

あなたのケースに具体的に言うと、

awk '/\/dev\/appvg\/home/{$4="defaults,nodev"}{print}' /etc/fstab
于 2013-10-02T22:25:42.957 に答える