J’ai un texte dans un fichier file.txt comme ça
xxxxxxxxxxxxxxx xxxxxxxxxxxxxxx abc // delimited by tab xxxxxxxxxxxxxxx xxxxxxxxxxxxxxx
Je sais en utilisant sed
je peux trouver et remplacer le texte dans un fichier. Si une ligne commence par ab (séparé par un onglet), je dois le remplacer par de f. Donc, le fichier ci-dessus sera
xxxxxxxxxxxxxxx xxxxxxxxxxxxxxx def // delimited by tab xxxxxxxxxxxxxxx xxxxxxxxxxxxxxx
Je peux le faire pour trouver et remplacer, je veux seulement les cas où la ligne commence par ab et remplace la ligne entière.
sed -i 's/a/\t/\b/\t\/c/REPLACED TEXT/g' file.TXT
Utilisez un symbole ^
pour représenter le début d’une ligne:
sed -i 's/^a\tb.*$/REPLACED TEXT/g' file.TXT
Exmplanation:
^
signifie début de ligne / entrée \t
signifie symbole d’onglet .
signifie n’importe quel caractère *
signifie zéro ou plus de l’expression précédente $
signifie fin de ligne / entrée Ce qui suit remplacera la ligne entière si elle commence par a
. Le .*$
Fait que le match inclut la ligne entière pour le remplacement. Votre exemple de regex incluait c
mais la prose ne mentionnait a
et b
, donc il n’était pas très clair si c
était requirejs. Sinon, supprimez \tc
du regex.
s/^a\tb\tc.*$/REPLACED TEXT/g
Avec awk
awk '/^a\tb/{$0="REPLACED TEXT"} 1' foo.txt
Cela pourrait fonctionner pour vous (GNU sed):
sed -i '/^a\tb/c\replacement text' file