J'ai de gros fichiers texte avec des chaînes délimitées par des espaces (2-5). Les chaînes peuvent contenir "'" ou "-". Je voudrais remplacer disons le deuxième espace par un tuyau.
Quelle est la meilleure façon de procéder?
En utilisant sed, je pensais à ceci:
sed -r 's/(^[a-z'-]+ [a-z'-]+\b) /\1|/' filename.txt
D'autres idées / meilleures / plus simples?
linux
command-line
sed
awk
dnkb
la source
la source
sed
fichier info: "Remarque: la norme POSIX ne spécifie pas ce qui doit se produire lorsque vous mélangez lesg' and NUMBER modifiers, and currently there is no widely agreed upon meaning across
implémentations sed. Pour GNU" sed ", l'interaction est définie comme: ignorer les correspondances avant le NUMBERth, puis correspondre et remplacer toutes les correspond à partir du NUMBERe. "sed
. Je ne suis pas sûr que je devrais vous remercier de m'avoir rendused
encore plus utile, mais je le ferai quand même. ;)Avez-vous essayé votre version? Cela a-t-il fonctionné? Parce que je pense que c'est fondamentalement une bonne idée. Je ferais un peu différemment, cependant:
Cela acceptera tous les caractères d'un mot qui n'est pas un espace et acceptera plus d'un espace entre les deux premiers mots.
la source