Je veux imprimer toutes les lignes du fichier jusqu'au mot de correspondance, veuillez me conseiller sur la façon de le faire avec awk
par exemple
Je veux imprimer toutes les lignes jusqu'au mot PPP
remarquez que la première ligne doit être différente de AAA (n'importe quel mot)
cat file.txt
AAA ( the first line/word chuld be any word !!!!! )
BBB
JJJ
OOO
345
211
BBB
OOO
OOO
PPP
MMM
(((
&&&
donc j'ai besoin de ça
AAA
BBB
JJJ
OOO
345
211
BBB
OOO
OOO
PPP
autre exemple (souhaitez imprimer jusqu'à KJGFGHJ)
cat file.txt1
HG
KJGFGHJ
KKKK
donc j'ai besoin de
HG
KJGFGHJ
sed
:sed '/PPP/q' infile
awk
, donc je ne donne pas d'autres outils.1
c'est comme{print $0}
. Notez également qu'il//
s'agit d'un modèle vide et que le résultat n'est pas spécifié. C'est du travail dansgawk
,mawk
Brian Kernighan propre version mais pas dansnawk
,oawk
depuis le coffre à outils d'héritage.Vous pouvez également utiliser un modèle de plage correspondant à la première ligne (NR égal à 1) jusqu'à la première correspondance de «PPP» dans une ligne
si la ligne doit correspondre exactement à «PPP», utilisez uniquement
Si vous souhaitez faire de même pour chaque fichier de la liste d'arguments, utilisez la variable FNR qui se réinitialise à 1 pour la première ligne de chaque fichier traité
la source
Comme OP l'a dit, sa première ligne ou mot de fichier peut contenir n'importe quel mot (comme
PPP
lui-même), vous devez donc vérifier cela et empêcher la première ligne de correspondre et éviter laawk
sortie.Ensuite, vous pouvez essayer ceci:
Fichier d'entrée:
Commander:
Production:
la source