sed を使用した英数字パターンの除外

sed を使用した英数字パターンの除外

Gen IDレポートを作成していますが、現在アカウントをインポートするために使用しているコマンドは、必要なアカウントのほとんどをインポートしますが、明らかにegrepGen IDの一部が実行するように数字で終わるアカウントはインポートされません。

cat /etc/passwd | cut -d: -f1 | egrep '^[a-z]|^[A-Z]' | egrep '[a-z]$|[A-Z]$'

幸いなことに、私たちのユーザーアカウントはすべて同じパターン(1文字、6桁)に従います。sedすべてのアカウントを印刷するにはどうすればよいですか?/etc/passwd とは別に文字で始まり、6つの数字が来るのですか?

ベストアンサー1

grep -vE '^[[:alpha:]][[:digit:]]{6}:' /etc/passwd

/etc/passwdアルファベット文字で始まり、その後に6桁の数字が続く行を除くすべての行が印刷されます:

重要なのは、行を印刷するオプションを-v教えることです。grepいいえパターンを一致させます。

ユーザー名だけが必要な場合:

cut -d : -f 1 < /etc/passwd | grep -vEx '[[:alpha:]][[:digit:]]{6}'

または以下を使用してsed

sed -n '/^[[:alpha:]][[:digit:]]\{6\}:/!s/:.*//p' /etc/passwd

!もう一度これが意味するものは次のとおりです。いいえ

おすすめ記事