Я использую fnr.exe (https://findandreplace.codeplex.com).
Моя домашняя работа:
Value: String
Details: other_str
Number: xxx
Value: String
Details: other_str
Number: xxx
Value: String
Details: other_str
Number: xxx
Value: String
Details: other_str
Number: xxx
после использования fnr.exe у меня
String
xxx
String
xxx
String
xxx
String
xxx
Действительно хороший инструмент для поиска и замены множества файлов с помощью ie. regex.
Я пытался сегодня сравнить скорость этого инструмента с sed в Cygwin.
К сожалению, моя команда не работает в seed. Не знаю почему. Можете ли вы помочь мне?
На данный момент в fnr.exe я использую эту команду через терминал (и работает хорошо):
"C:\Test\soft\fnr.exe" --cl --dir "C:\Test" --fileMask "*.*" --caseSensitive --useRegEx --find "^(Value: )|^.*(Details).*$\s|^(Number.*: )" --replace ""
Затем я попытался с sed
sed -i 's/^(Value: )|^.*(Details).*$\s|^(Number.*: )/\1/' *.*
и не работает ...
:) :) Хорошо, я НАШЕЛ РЕШЕНИЕ ДЛЯ ЭТОЙ ПРОБЛЕМЫ
ЗДЕСЬ КОД ДЛЯ ВСЕХ ФАЙЛОВ В FOLDER:
sed -i -e '/Details/d' -e 's/Value: //g' -e 's/Number: //g' *.txt
Пояснение - мы хотим удалить вторую строку и две строки «Значение» и «Число» и сохранить их на месте во всех текстовых файлах или для одного файла ie. (example.txt вместо * .txt)
Удалить вторую строку
sed -i -e '/Details/d'
Удалить строку "Значение"
-e 's/Value: //g'
Удалить строку "Число"
-e 's/Number: //g'
Скорость между FNR.EXE и SED огромна!
Example.txt (несколько миллионов записей)
FNR.EXE - 3 минуты
SED - 36 секунд :):)
Интересно, будет ли awk или grep быстрее, чем sed?
Ура!