La sortie de ma commande est quelque chose comme:
1540 "A B"
6 "C"
119 "D"
La première colonne est toujours un nombre, suivi d'un espace, puis d'une chaîne entre guillemets.
Mon but est d'obtenir la deuxième colonne uniquement, comme:
"A B"
"C"
"D"
J'avais l'intention d'utiliser <some_command> | awk '{print $2}'
pour accomplir cela. Mais la question est, certaines valeurs de la deuxième colonne contiennent des espaces, qui se trouvent être le délimiteur par défaut pour awk
séparer les champs. Par conséquent, la sortie est foirée:
"A
"C"
"D"
Comment obtenir proprement la valeur de la deuxième colonne (avec des guillemets appariés)?
awk '{$1=""; print $0}'
, mais il a toujours un caractère d'espace blanc principal. Il pourrait être supprimé parsed '/^ //'
. Pourtant, cela pourrait-il être fait avecawk
?Réponses:
Ou utilisez sed & regex.
la source
<some_command> | sed 's/.* \(".*"\)/\1/'
Utilisez
-F [field separator]
pour diviser les lignes sur"
s:ou pour l'entrée du tuyau
production:
la source
'{print "\""$2"\""}'
"\"" + $2 + "\""
. Les guillemets environnants indiquent quelque chose à ajouter à la sortie et le guillemet échappé (\"
) est en cours d'impression. Pour aider le visualiser, voici ce qu'elle ressemblerait si nous voulions ajouter des espaces vides autour de la$2
place des guillemets:'{print " "$2" "}'
. Nous pouvons également ajouter un espacement de format pour le rendre un peu plus facile à grok:'{print " " $2 " "}'
Si vous pouvez utiliser autre chose que 'awk', essayez ceci à la place
-d est un délimiteur, -f est le champ à couper et avec -f2- nous avons l'intention de couper le 2ème champ jusqu'à la fin.
la source
-d
? Cela semble un peu étrange de cette façon.Cela devrait fonctionner pour extraire une colonne spécifique de la sortie de la commande "images docker":
Cela va imprimer la troisième colonne
la source
Vous n'avez pas besoin de awk pour cela. L'utilisation
read
dans le shell Bash devrait suffire, par exempleou:
la source
Si vous avez GNU awk, c'est la solution que vous souhaitez:
la source
la source
Ensuite, en supposant que vous nommez le script co, disons, faites quelque chose comme ceci pour obtenir la taille des fichiers (l'exemple suppose que vous utilisez Linux, mais le script lui-même est indépendant du système d'exploitation): -
ls -lh | co 5
la source