2010-09-01 8 views
2

la cible de syntaxe suivante est d'ajouter « _name4 » sur la première chaîne en ligne qui correspondent aux « nom1 + nom2 + NAME3 » et de remplacer l'ancien mot nouveaused + sans commande cat

cat file | sed '/name1 + name2 + name3/s/[^ ]*\>/&_name4/' | sed s'/old/new/g' > new_file 

ma question : est-il possible de faire la même chose sans utiliser la commande cat?

+0

Oui. sed accepte volontiers un nom de fichier comme argument de ligne de commande. Vous pouvez également enchaîner les commandes sed avec -e: sed -e '...' -e '...' -e '...' filename – galaxywatcher

+0

L'argument '-i' écrase le fichier courant et crée une sauvegarde dans le fichier. même dossier. Ne pas afficher une sortie d'écran. – ghaschel

+0

sed -i -e "commande" -e "un autre fichier commnand" – ghaschel

Répondre

6

Vous avez rarement besoin de chat. Vous pouvez le faire comme ceci:

sed '/name1 + name2 + name3/s/[^ ]*\>/&_name4/' file | sed 's/old/new/g' > new_file 

Vous pouvez également combiner les commandes sed:

sed '/name1 + name2 + name3/s/[^ ]*\>/&_name4/;s/old/new/g' file > new_file 
1

sed file -e <expr> ou sed <expr> file