sedで特定の文字を含む行のフィルタリング

sedで特定の文字を含む行のフィルタリング

ソートされていない単語のリストが2つあり、選択した特定の文字を除く新しい単語のリストを作成して、順番にソートしたいと思います。次のコマンドを試しました。

 cat roa7.lst gr7.usl | sed -e 's/\s/\n/g' | sed -n 's/[^hlrw]/&/p' | sort -u | less -N

ただし、最後のsedコマンドは文字セットを含む行を除外しようとしましたが、これらの[hlrw]単語の除外に失敗しました。どういうわけか、私は区切り文字の中のカラットの使いやすさを逃しました。このパイプをどのように修正しますか?

ベストアンサー1

最後のコマンドの正しい構文sedは次のとおりです。

sed -n '/[hlrw]/!p'

または

sed '/[hlrw]/d'

ほぼ同じです。そのawk手順は次のとおりです。

awk '!/[hlrw]/'

元の例では、誤ったコマンドは「セットにない文字を含みます」(行が、、または文字でhlrw完全に構成されていない限り正しいものです)を意味し、2番目のコマンドは「セットにない文字を含む文字を探してください」です。 「セット」の「設定」行を印刷し、「セットを含む行を見つけて」入力から削除します。hlrwhlrwhlrw

おすすめ記事