sed+ は行の先頭に文字列を追加しますが、すでに存在する場合は無視します。

sed+ は行の先頭に文字列を追加しますが、すでに存在する場合は無視します。

次の例は、fstab で UUID 番号を一致させるときに行の先頭に文字列を追加する方法を示しています。

sed -e "/UUID=953b1921-ac73-4b7b-abaf-ff983b0fce8a/ s/^/###FAULTY_DISK###/"  -i /etc/fstab

我々は確認することができます

more /etc/fstab 

###FAULTY_DISK###UUID=953b1921-ac73-4b7b-abaf-ff983b0fce8a /data/sdc ext4 defaults,noatime 0 0

しかし、2回目の実行では、

sed -e "/UUID=953b1921-ac73-4b7b-abaf-ff983b0fce8a/ s/^/###FAULTY_DISK###/"  -i /etc/fstab


more /etc/fstab
###FAULTY_DISK######FAULTY_DISK###UUID=953b1921-ac73-4b7b-abaf-ff983b0fce8a /data/sdc ext4 defaults,noatime 0 0

###FAULTY_DISK###fstabファイルにすでに設定されている場合は、追加を無視するようにsedに指示する方法

ベストアンサー1

そのUUIDで始まる場合にのみ追加します。

sed -e 's/^UUID=953b1921-ac73-4b7b-abaf-ff983b0fce8a/###FAULTY_DISK###&/' /etc/fstab

または、先行スペースも無視したい場合(存在する場合):

sed -e 's/^[[:blank:]]*UUID=953b1921-ac73-4b7b-abaf-ff983b0fce8a/###FAULTY_DISK###&/' /etc/fstab

おすすめ記事