2009-09-14 9 views

Répondre

1

Un hack simple et pas cher:

cat INFILE | sed 's/\(.*\)\t\(.*\)\t\(.*\)/\1\tREPLACEMENT\t\3/' > OUTFILE 

tester:

echo -e 'one\ttwo\tthree\none\ttwo\tthree' | sed 's/\(.*\)\t\(.*\)\t\(.*\)/\1\tREPLACEMENT\t\3/' 

prend en

one two three 
one two three 

et produit

one REPLACEMENT three 
one REPLACEMENT three 
3
awk ' { $2="<STRING>"; print } ' <FILENAME> 
+0

Battez-moi. Juste en essayant de valider que votre réponse est venue :-) –

+1

Je pense que cela se divisera sur n'importe quel espace, pas seulement les onglets. Ajouter un -F "\ t" pourrait aider. –

+0

Comment pourrais-je fournir un argument à la commande ci-dessus. Par exemple, si STRING et FILENAME sont identiques, puis-je rediriger la valeur en argument vers la commande? – biznez

2
cat INFILE | perl -ne '$ln=$_;@x=split(/","/); @a=split(/","/, $ln,8);@b=splice(@a,0,7); $l=join("\",\"", @b); $r=join("\",\"", splice(@x,8)); print "$l\",\"10\",\"$r"' 

Ceci est un exemple qui change la 10ème colonne en "10". Je préfère cela car je n'ai pas besoin de compter la parenthèse correspondante comme dans la technique sed.

Questions connexes