Awk untuk mendapatkan semua pengguna reguler saya di bayangan

8

Saya punya skrip.

Saya ingin mendapatkan semua pengguna reguler saya dari /etc/shadowmisalnya semua pengguna yang istilah kedua dalam file bayangan dimulai dengan $atau !$.

Pola saya adalah

sudo getent shadow | awk -F: '$2 ~ /^$/ || /^!$/ {print $1}'

Untuk saat ini tidak berfungsi.

danaso
sumber
apakah itu harus awk? :-)
Rinzwind

Jawaban:

11

Anda harus melarikan diri $, karena ini adalah char khusus untuk "End of Line" seperti ^"Beginning of Line".

sudo getent shadow | awk -F: '$2 ~ /^\$/ || $2 ~  /^!\$/ {print $1}'
pLumo
sumber
+1 tangkapan bagus :)
Rinzwind
Terima kasih, ini berhasil. Saya hanya perlu untuk tidak memasukkan pengguna root
danaso
1
Sederhana: awk -F: '$2 ~ /^!?\$/ {print $1}'- Ini menggabungkan dua tes pertandingan dan mengatakan "cocok dengan tanda dolar di awal bidang, opsional ( ?) didahului oleh !"
Dijeda sampai pemberitahuan lebih lanjut.
4

Semua pengguna dengan kumpulan kata sandi dapat dicantumkan seperti ini:

getent shadow | egrep '^[^:]*:[*!]:' -v | cut -f1 -d:
Rinzwind
sumber