Używam sed
w systemie Linux, próbując dopasować linie danych mające trzy pola, tabulator oddzielony (ale separacja może być dowolna biała spacja), jak w:
12.3 0a 1b
15.5 0v 1h
17.7 5k 3c
; teraz używam tego:
sed -n 's/^\([^[:blank:]]*\)[[:blank:]]*\([^[:blank:]]*\)[[:blank:]]*\([^[:blank:]]*\)/\1\t\3\t\2/p' mydata.txt
... więc jestem w stanie wyodrębnić i manipulować (w przykładzie, tylko pozycja inwersja) poprzez poszczególne pola \1
, \2
, \3
.
Czy istnieje lepszy sposób na określenie tego?
Twoje zdrowie!
awk
lub perl
, więc zawsze gdy mam taki problem z „odwróceniem pola w danych tekstowych”, pierwszą rzeczą, o której myślę, jest to, co wiem: „ \2 \1
” z sed
. Jednak sed
nieadekwatność do zadania jest również odpowiedzią, którą doceniam ( ponieważ, jak powiedziałem, nie jest to pierwsza rzecz, która przychodzi mi na myśl, gdy mam ten problem ) ... Pozdrawiam!
sed
może nie być najlepszym narzędziem do tego. Czy jest jakiś szczególny powód, dla którego nie chcesz używaćawk
,perl
lub coś lepszego?