Как сделать этот скрипт Sed быстрее? - PullRequest
9 голосов
/ 01 декабря 2009

Я унаследовал этот фрагмент сценария sed, который пытается удалить определенные пустые места:

s/[\s\t]*|/|/g
s/|[\s\t]*/|/g
s/[\s] *$//g
s/^|/null|/g

, который работает с файлом размером около 1 ГБ.Этот скрипт работает в течение 2 часов на нашем Unix-сервере.Есть идеи, как это ускорить?

Отмечает, что \ s обозначает пробел, а \ t обозначает вкладку, фактический скрипт использует фактическое пространство и символ табуляции, а не эти символыФайл представляет собой файл с разделителями каналов и находится локально, а не в сети.4 строки находятся в файле, который выполняется с помощью sed -f

Ответы [ 11 ]

0 голосов
/ 01 декабря 2009

Попробуйте сделать это одной командой:

sed 's/[^|]*(|.*|).*/\1/'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...