Ho un file di testo come questo:awk: Trova e sostituisci in alcuni campo solo
$ cat test
12 13 2100 s
12 13 3100 s
100 13 100 s
12 13 300 s
Voglio l'uscita per essere come questo:
$ cat test
12 13 22000 s
12 13 32000 s
100 13 2000 s
12 13 300 s
voglio solo sostituire 100
in il campo 3 (una volta 100
è contenuto in $3
) in 2000
. Come posso realizzare questo lavoro usando awk
?
Come posso sostituire tutto ciò che non è al 100 con consente di dire 5000 ? – discipulus
@lovedynasty: puoi provare qualcosa come: 'awk '{sub (/ [^ 1] * [^ 0] * [^ 0] * /," 5000 ", $ 3)} 1' file'. Ma questo potrebbe non fornirti i risultati attesi. Di solito quando voglio eseguire una sorta di abbinamento inverso di pattern, vorrei usare una sorta di [asserzione di ricerca] (http://www.regular-expressions.info/lookaround.html). Sfortunatamente, 'awk' non li supporta e avrei bisogno di usare uno strumento più potente. Io userei invece 'perl' in modalità 'auto-split'. HTH. – Steve