Ho un esempio di file / etc / passwd come questo:
tom:x:1000:1000:Work:/home/tom:/bin/bash
george:x:1000:1000:Work:/home/george:/bin/bash
bla:x:1000:1000:Work:/home/bla:/bin/bash
boo:x:1000:1000:Work:/home/boo:/bin/bash
bee:x:1000:1000:Work:/root/list:/bin/bash
Sto cercando di elencare tutti gli utenti con una cartella home in /home/
.
scrissi
cat ~/Desktop/e.txt |awk -F ":" '{if ($6 ~/^/home/) print $1;}'
dove e.txt è il testo che ho copiato qui.
Capisco che c'è un problema con la barra rovesciata che è un carattere di escape, ma come posso risolverlo in modo da poterli elencare in una riga di un comando?
grep home e.txt | cut -d ":" -f 1
. Congratulazioni per il tuo premio UUOC. Tuttavia, questa non è una buona soluzione. Cosa succede se esiste un servizio "homebackup" che viene eseguito con un utente separato che prende il nome dal demone? Questo è un falso positivo.
cat > tool
variante di tali righe di comando perché può migliorare la chiarezza mantenendo il flusso da sinistra a destra dell'ingresso-elaborazione-uscita della catena di tubi. Si è meno efficiente, ma quasi sempre in minima parte così. Rende anche molto evidente l'aggiunta di una barra di avanzamento dove pertinente e utile quando si esegue in modo interattivo (basta sostituire cat
con pv
se installato).
cat
e si reindirizza a strumenti similiawk
osed
simili, in quanto possono essere dati il nome del file come argomento.