LINUX.ORG.RU

Как преобразовать каждую строку файла


0

0

Есть файл со строками (большой).
Нужна утилита, которая из этого файла сделает другой, в котором строки будут преобразованы.
Преобразование должно описываться параметрами командной строки (например двумя регулярными выражениями - первое для поиска, как в grep, второе - шаблон вывода со ссылками на матчи из первого выражения, как в MS Visual Studio).

grep сам-по-себе так умеет?
если нет, то какую утилиту командной строки использовать?

>как в MS Visual Studio

Твой вопрос звучит как "эй, ты, каазел, слышь, как тут пройти на площадь Ленина, быра сказал".

Если уж ты слышал про grep, то легко найдешь и awk, и sed.

abraziv_whiskey ★★★★★
()
Ответ на: комментарий от wyldrodney

я не думаю, я проверил.
http://sudouser.com/redaktirovanie-testa-pri-pomoshhi-sed.html

единственная засада - как внутрь кавычки вставить. в итоге сделал так:
set DOUBLE_QUOTE=""""
sed "s/.*/prefix %DOUBLE_QUOTE%\0%DOUBLE_QUOTE postfix/g" infile.txt >outfile.txt

ArsenShnurkov
() автор топика
Ответ на: комментарий от wyldrodney

> Еще вопросы?

Как из полного пути файла c именем получить
путь с именем и, через пробел, имя?

т.е. из строки g:\folder1\folder2\filename.txt
получить строку
g:\folder1\folder2\filename.txt filename.txt

Пробовал так:
echo g:\folder1\folder2\filename.txt | sed "s,{\0.*\\{\1[^\]*}}$,\0 \1,g"
не получилось:
sed: -e expression #1, char 31: Invalid back reference

ArsenShnurkov
() автор топика
Ответ на: комментарий от ArsenShnurkov

> как внутрь кавычки вставить

Несколько вариантов. Можно скрипт записать в файл и вызывать через -f имя_файла. Если команду отдавать из bash-а, там можно использовать 2 вида кавычек: ' и " (кавычки одного вида можно заключать в кавычки другого вида) — или кавычки можно экранировать обратной косой чертой \ . Про экранирование в cmd не знаю.

question4 ★★★★★
()
Ответ на: комментарий от Rastafarra

Тогда уж пусть читает for m in $(ls /bin) ; do man $m ; done

Lumi ★★★★★
()
Ответ на: комментарий от ArsenShnurkov

> а ты - обоснуй.

Ты пришел на форум линуксоидов и выясняешь почему у тебя не работают черезжопупортированные gnuwin32 утилиты в венде, более того - пытаешся добится от них работы как какого-то MS Visual Studio. Ну не троль ли?

paxac
()
Ответ на: комментарий от ArsenShnurkov

> т.е. из строки g:\folder1\folder2\filename.txt
получить строку
g:\folder1\folder2\filename.txt filename.txt

Для этого нужен sed?

@echo off
for %i in ("g:\folder1\folder2\filename.txt") do (
set fpath=%%~dpi
set fname=%%~nxi
)
echo %fpath% %fname%

TGZ ★★★★
()
Ответ на: комментарий от paxac

> не работают черезжопупортированные gnuwin32 утилиты в венде

Во всяком случае гнутый sed работает также хорошо. Единственно он возвращает окончание строк в юникс. Это не мешает, но и забывать не надо. Лечится добавлением \r или перезаписи конечного файла через more.exe


echo g:\folder1\folder2\file.ext | sed "s/\(.*\\\)\(.*\)/\2/"

TGZ ★★★★
()
Ответ на: комментарий от TGZ

> Для этого нужен sed?

Это я вопрос упростил. На самом деле я хочу загнать их в базу через osql. (т.е. сформировать строку INSERT-а с двумя значениями).
Под виндами, потому что на Linux перейти не получилось.

И на это есть минимум три причины:
1) в связи с отсутствием на нем нормальной поддержки сжатых дисков -
http://www.linux.org.ru/view-message.jsp?msgid=3629444

2) сетевые карты в линуксе перестают работать под высокой нагрузкой
http://www.linux.org.ru/view-message.jsp?msgid=3641808
(багу запостил в багзиллу gentoo,
http://bugs.gentoo.org/show_bug.cgi?id=260439
нашли такую же и в багтрекере ядра
http://bugzilla.kernel.org/show_bug.cgi?id=12411
)

3) скорость чтения с устройства 400MB/s, а скорость чтения с LVM на том же устройстве - 5,6MB/s !!!

ArsenShnurkov
() автор топика
Ответ на: комментарий от ArsenShnurkov

Ну бывает кривая гента в кривых руках на кривом железе :-)

>Под виндами, потому что на Gentoo перейти не получилось.


fixed

sdio ★★★★★
()
Ответ на: комментарий от sdio

Железо ровное - сетевые карты intel. ошибка в ядре - т. е. во всех дистрибутивах. Я видел такую ошибку в трекере Ubuntu и Fedora.

Советы по испрямлению кривизны рук принимаются.

ArsenShnurkov
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.