J'ai trouvé étonnamment que lorsque vous faites ceci:

echo "bonjour" | awk -F'|' '{print $1;}'

Vous obtenez:

Bonjour

Comment ne rien retourner étant donné que le séparateur de champ '|' est absent dans la ligne ?

Je fais cela pour extraire les dates au début des lignes de journal, mais certaines lignes ne commencent pas par une date et me posent ensuite ce problème. Merci, je suis assez nouveau dans awk.

awk
0
keegita gina 12 juil. 2016 à 18:46

2 réponses

Meilleure réponse

Tu peux le faire

echo "hello" | awk -F'|' 'NF>1 {print $1}'

echo "hello|1" | awk -F'|' 'NF>1 {print $1}'
hello

Uniquement lorsque vous avez plus d'un champ, retournez le premier champ

Sur un fichier

cat testing
record1|val1
record2|val2
record3
record4|val4

awk -F'|' 'NF>1 {print $1}' testing
record1
record2
record4
1
SriniV 12 juil. 2016 à 18:52

Vous pouvez également utiliser

awk -F'|' '$1==$0'

Si aucun séparateur n'est présent, le champ un contiendra la ligne entière.

1
Michael Vehrs 13 juil. 2016 à 09:26