J'essaie de supprimer les deux premières lignes d'un fichier en ne l'imprimant tout simplement pas dans un autre fichier. Je ne cherche pas quelque chose d'extraordinaire. Voici ma tentative (ratée) de awk:
awk '{ (NR > 2) {print} }' myfile
Cela jette l'erreur suivante:
awk: { NR > 2 {print} }
awk: ^ syntax error
Exemple:
contenu de "monfichier":
blah
blahsdfsj
1
2
3
4
Ce que je veux que le résultat soit:
1
2
3
4
Utilisez la queue:
tail -n+3 file
à partir de la page de manuel:
-n, --lines=K
output the last K lines, instead of the last 10; or use -n +K
to output lines starting with the Kth
Que diriez-vous:
tail +3 file
OR
awk 'NR>2' file
OR
sed '1,2d' file
Vous y êtes presque. Essayez plutôt ceci:
awk 'NR > 2 { print }' myfile
awk est basé sur des règles, et la règle apparaît nue (c'est-à-dire sans accolades) avant le bloc qu'il exécuterait s'il passe.
Aussi, comme l'a souligné Jaypal, dans awk si tout ce que vous voulez faire est d'imprimer la ligne qui correspond aux règles, vous pouvez même omettre l'action, simplifiant ainsi la commande pour:
awk 'NR > 2' myfile
awk
est basé sur pattern{action}
déclarations. Dans votre cas, le pattern
est NR>2
et le action
que vous souhaitez effectuer est print
. Ce action
est aussi le default action
sur awk
.
Donc même si
awk 'NR>2{print}' filename
fonctionnerait bien, vous pouvez le raccourcir en
awk 'NR>2' filename
.