Déposer:
Data inserted into table. Total count 13
No error occurred
Data inserted into table. Total count 45
No error occurred
Data inserted into table. Total count 14
No error occurred
Data inserted into table. Total count 90
No error occurred
Fichier de sortie attendu:
Data inserted into table. Total count 13
Data inserted into table. Total count 45
Data inserted into table. Total count 14
Data inserted into table. Total count 90
Je veux que la sortie ait l'air de cette façon: chaque deuxième ligne sera supprimée, mais il n'y aura pas d'espace entre les lignes.
Avec sed
:
sed -e n\;d <file
Avec POSIX awk
:
awk 'FNR%2' <file
Si vous avez plus ancien awk
(comme oawk
), vous avez besoin de:
oawk 'NR%2 == 1' <file
Avec ex
:
$ ex file <<\EX
:g/$/+d
:wq!
EX
éditera le fichier en place.
g
marque une commande globale/$/
correspondre à toutes les lignes+d
Supprimer la ligne suivantewq!
Enregistrer toutes les modificationsCette approche partage le même idéal avec une approche sed
, supprimez chaque prochain ligne de ligne actuelle de la ligne 1.
Avec Perl
:
Perl -ne 'print if $. % 2' <file
et Perl6
:
Perl6 -ne '.say if $*IN.ins % 2' <file
Perl6 -ne '.say if ++$ % 2' <file
Voici un moyen d'utiliser sed
:
sed -n 'p;n' filename
Une autre façon avec GNU sed
:
sed -n '1~2p' filename
Sortie des commandes ci-dessus:
Data inserted into table. Total count 13
Data inserted into table. Total count 45
Data inserted into table. Total count 14
Data inserted into table. Total count 90
Vous pouvez essayer avec awk
:
awk 'NR % 2 != 0' file
ou vous pouvez imprimer uniquement des lignes contenant Data inserted
:
awk '$0 ~ /Data inserted/' file
Une autre réponse, vous pourriez utiliser VI/Vim!
qdjdq
Et puis si votre fichier était de 500 lignes (par exemple) type
250 @ D
Puis pour écrire et quitter le type
:X
Ou si quelque chose ne va pas et que vous ne voulez pas économiser:
: Q!
Explication:
q #Start Recording
d #Put the recording into register 'd'
j #Move the cursor down
dd #Delete the line
q #Stop recording
250 #Number of repeats
@d #Playback the recording in register 'd'.
Voici une façon très différente de le faire:
< file paste - - | cut -f1
Cela suppose que les lignes numérotées impaires ne contiennent pas d'onglets. S'ils le font, vous devrez alors choisir un autre caractère de séparateur, par exemple. :
ici:
< file paste -d: - - | cut -d: -f1
Une autre option (plus courte)
sed 'n; d' file
Cela résout également le problème, bien qu'il soit un peu plus lent:
vim -c "%normal jdd" -c "wq" file