Comment travailler avec des lignes qui ne contiennent que 4 mots avec SED?
C’est ce que j’ai réussi à faire, mais ça ne marche pas:
sed -e '/[ ]*[^ ]+[ ]*[^ ]+[ ]*[^ ]+[ ]*[^ ]+[ ]*/!d' -e 'other commands...' fileName
Cela devrait être portable:
sed -n ' /^[[:blank:]]*\([[:alpha:]]\{1,\}[[:blank:]]\{1,\}\)\{3\}[[:alpha:]]\{1,\}[[:blank:]]*$/ { # capture the 1st word of every 4 word line and print it 3 times s/^[[:blank:]]*\([[:alpha:]]\{1,\}\).*/\1 \1 \1/ p } ' > temp-file
AWK
peut être l’outil le plus facile pour votre tâche. Il suffit de vérifier que le nombre de champs dans une ligne est égal à quatre en utilisant la variable intégrée awk NF
.
awk 'NF==4' filename
serait un bon sharepoint départ. Si vous souhaitez écrire les modifications dans un fichier, vous pouvez utiliser l’option d’édition in-situ de GNU AWK
comme ci-dessous.
gawk -i inplace 'NF==4' filename