2016-12-03 5 views
-7

Я долго искал это, но я не мог понять, что делает это sed на самом деле !?Что делает эта команда sed?

sed -E $'s:$:\t:' < file1 | cut -f 2 > file2 

Кто может объяснить мне пожалуйста?

+0

Откуда у вас это? –

+3

Вместо поиска решения найдите документацию для 'sed' и прочитайте ее. Тогда вы сможете объяснить это сами ... И понять другие вещи, которые может сделать «sed». –

+0

FWIW, это подстановка, которая добавляет символ табуляции в конец каждой строки. Затем вырежьте второе поле. – andlrc

ответ

1

Это не сценарий sed, это сценарий оболочки, содержащий команды bash, sed и cut. Сценарий sed запутывается плохими правилами цитирования, излишне меняя разделитель и добавляя ненужный аргумент. Я предполагаю, что вы знаете, что делает cut -f 2, поэтому я не могу представить, почему вы включили это, чтобы еще больше запутать свой вопрос, и поэтому я проигнорирую его и сосредоточусь на части sed.

Команда у вас есть:

sed -E $'s:$:\t:' 

Давайте перепишем, осмысленно, и вы получите:

sed 's/$/'$'\t''/' 

который без ' сценария разделителей и с некоторыми дополнительными пробелами добавленных для ясности:

s/ $/$'\t'/

Теперь вы видите, что он делает? Замена конца строки вкладкой.

+1

Так что в итоге это было что-то очень простое ... Спасибо за ваш ответ :) –

Смежные вопросы