/etc/fstab
Linuxのファイルから重複行を削除するには、次のawkを使用しています。
問題は、で始まる行も削除することです#
。
awk
で始まる行を無視するように構文をどのように変更できますか#
?
awk '!a[$0]++' /etc/fstab > /etc/fstab.new
cp /etc/fstab.new /etc/fstab
答え1
#
繰り返されない行だけでなく、次の文字で始まる行も許可するようにAWKに指示します。
awk '/^#/ || !a[$0]++' /etc/fstab > /etc/fstab.new
重複した行なしでこれを回避するには(あなたの意見に従って)、次のようなものを使用できます。
if awk '!/#^/ && a[$0]++ { dup = 1 }; END { exit !dup }' /etc/fstab; then
awk '/^#/ || !a[$0]++' /etc/fstab > /etc/fstab.new
copy /etc/fstab.new /etc/fstab
fi
しかし、これは最終的に2回動作します。