これはフォローアップです。前の質問。フィールドの間隔が異なる場合でも、この構文を使用して重複行を削除します。
awk '{$1=$1};!NF||!seen[$0]++' /tmp/fstab
今から始まる行を除外したいと思います#
。だから私はこの構文を使います。
awk '/^#/ || "'!'"'{$1=$1};!NF||!seen[$0]++' /tmp/fstab
-bash: !: event not found
私の文法に何の問題がありますか?
ベストアンサー1
どうですか?
awk '!NF||$1~/^#/ {print; next} {$1=$1} !seen[$0]++' /tmp/fstab
これにより、空白行または最初のフィールドが始まる行がすぐに印刷され、#
実行をスキップして追加のコードを無視します。他のすべての行は、まだ見つからない限り再構成され印刷されます。
$1~/^#/
行全体に一致を適用するのではなく(つまり、単に)ifをチェックする理由は、前にスペースがあるコメント行を/^#/
キャッチできるようにするためです。#
マンページではfstab
注釈を与える資格を得るために次の事項が必要ですが、最初文字はでなければならず、#
@StephenKittが指摘したように、Linux実装は先行スペースをスキップし、コメントを1行で許可しlibmount
ます。空でない最初キャラクターは#
。