Страница 1 из 1

простенький скрипт sed

Добавлено: 2010-11-06 21:29:58
seamus
Помогите пожалуйста с редактором sed. Я с ним не знаком, но нюхом чую, что это то, что надо. Требуется написать скрипт, чтобы из файла типа:

Код: Выделить всё

and    [транскрипция]     перевод 
cold (n)    [транскрипция]     перевод
hang (hung, hung)     [транскрипция]    перевод 
do (did, done)	[du:, d?d, d?n]	перевод
получить следующее:

Код: Выделить всё

and    [транскрипция]     перевод    and
cold (n)    [транскрипция]     перевод     cold
hang (hung, hung)     [транскрипция]    перевод     hang
do (did, done)	[du:, d?d, d?n]	перевод     do
Разделителями между полями являются табы. Соль в том, чтобы всё, что до первого пробела, скопировать в конец строки, предварительно добавив [TAB]. Всё. Заранее благодарен!

Re: простенький скрипт sed

Добавлено: 2010-11-06 22:21:08
BSD_daemon
на awk не подойдет ?

Код: Выделить всё

cat your_file | awk '{ printf "%s\t%s\n", $0, $1; }'

Re: простенький скрипт sed

Добавлено: 2010-11-08 5:01:55
BlackCat

Код: Выделить всё

cat test.txt | sed 's/^\([^[:space:]]*\)\(.*\)/\1\2 \1/'
Разделителем между строкой и добавляемым словом будет пробел. Если вы хотите именно символ табуляции, то команду придётся записать в файл и между \1\2 и \1 вставить символ табуляции. Или использовать awk, как предлагал BSD_daemon, т.к. awk нормально переваривает конструкции вида \t.