Quiero comparar cada usuario en el archivo passwd con su entrada en el archivo shadow e imprimir toda la línea del archivo passwd si la entrada en el archivo shadow coincide con 999999. ¿Cuál es la forma más fácil en Perl para hacer esto? ? ¿O supongo que podría descartar los valores de un archivo y hacer coincidir el otro archivo? Cual es la mejor manera de hacer esto?¿Cómo puedo sacar una línea de/etc/passwd si su entrada de sombra correspondiente es 999999?
Respuesta
awk -F":" 'FNR==NR&&$5=="99999"{user[$1];next}($1 in user)' /etc/shadow /etc/passwd
cambio FNR==NR&&$5=="99999"
a FNR==NR&&$5=="99999"&&$2!="!!"
si desea excluir líneas con "!!"
Supoose Quiero excluir todas las líneas que contengan "!!" ? – paul44
cambiar 'FNR == NR && $ 5 ==" 99999 "' a 'FNR == NR && $ 5 ==" 99999 "&& $ 2! =" !! "' – ghostdog74
esto no funciona para mí - la salida es como 'cat/etc/passwd' – paul44
sudo perl -F: -lane '(1..eof)?($_{$F[0]}=$_):/999999/&&($_=$_{$F[0]})&&print' /etc/passwd /etc/shadow
#! /usr/bin/perl
use warnings;
use strict;
sub read_passwd {
open my $fh, "<", "/etc/passwd" or die "$0: open: $!";
my %passwd;
while (<$fh>) {
next unless /^([^:]+)/;
$passwd{$1} = $_;
}
\%passwd;
}
my $passwd = read_passwd;
open my $fh, "<", "/etc/shadow" or die "$0: open: $!";
while (<$fh>) {
my($user,$maxage) = (split /:/)[0,4];
next unless $maxage eq 99999;
if ($passwd->{$user}) {
print $passwd->{$user};
}
else {
warn "$0: no passwd entry for '$user'";
}
}
Usted podría utilizar AnyData::Format::Password:
#!/usr/bin/perl
use strict; use warnings;
use AnyData;
my $passwd = adTie(Passwd => 'passwd');
my $shadow = adTie(Passwd => 'shadow');
for my $user (keys %$shadow) {
if ($user->{fullname} and $user->{fullname} eq '999999') {
print $passwd->{$user->{username}}{fullname}, "\n";
}
}
Salida:
... Privilege-separated SSH RPC Service User Anonymous NFS User HAL daemon
O:
for my $user (keys %$shadow) {
if ($user->{fullname} and $user->{fullname} eq '999999') {
my @values = map { defined $_ ? $_ : '' }
@{ $passwd->{$user->{username}} }{@fields};
print join(':', @values), "\n";
}
}
- 1. python: cómo comprobar si una línea es una línea vacía
- 2. eliminar sombra interna de entrada de texto
- 3. ¿Cómo puedo leer una línea de entrada en Inform 7?
- 4. ¿Cómo puedo saber si una cadena dada es una entrada válida para preg_match de PHP?
- 5. ¿Cómo puedo eliminar una sombra en iPhone
- 6. Cómo sacar CSS atributos de estilos en línea con BeautifulSoup
- 7. ¿Cómo puedo poner un elemento de entrada en la misma línea que su etiqueta?
- 8. ¿Cómo correlacionar el elemento JComboBox con su ID correspondiente?
- 9. ¿Cómo puedo sacar el eclipse del modo MDI?
- 10. Dibujando una línea con una sombra, pero solo quieres mantener la sombra. IOS
- 11. Cómo sacar un NSString de un NSMutableString?
- 12. QPlainTextEdit para una sola línea de entrada
- 13. ¿Cómo puedo superponer una sombra paralela en un ScrollView?
- 14. ¿Cómo puedo eliminar el estilo de borde de una entrada de texto en un safari móvil?
- 15. ¿Cómo puedo tener una sombra paralela en mi ActionBar (ActionBarSherlock)?
- 16. ¿Cómo sacar un valor de una mónada en Haskell?
- 17. Pestañas de IU de Jquery: ¿Cómo puedo ocultar una pestaña y su div correspondiente cuando la cierro?
- 18. Cómo agregar sombra a una UIView transparente?
- 19. jQuery comprobar si una entrada es tipo casilla de verificación?
- 20. IOS: trace una línea con su dedo
- 21. jQuery: comprobar si la variable de entrada es elemento DOM
- 22. ¿Cómo sacar números de la cadena?
- 23. ¿Cómo puedo saber si una propiedad es una colección genérica?
- 24. ¿Cómo puedo saber si una tabla es una matriz?
- 25. ¿Cómo puedo verificar si una BST es válida?
- 26. Agregar una sombra de cuadro adicional a un elemento donde la sombra existente es desconocida
- 27. ¿Cómo saber el número de línea correspondiente a una posición de memoria intermedia?
- 28. recuadro de recuadro de sombra para el campo de entrada
- 29. ¿Qué pasaría si usa belongs_to sin tener un has_one correspondiente?
- 30. Leyendo una línea completa de entrada
@Svante: correcto en la extrane Por ejemplo, apostrophe, pero yo diría que "its" es correcto: "compare cada [entry] del usuario en el archivo passwd con la entrada * its * [correspondiendo] en el archivo shadow. –