xargs grep предложение

Калибр был бы моим лучшим предложением, хотя это совсем не прекрасно.

Версия Linux идет и с графическим интерфейсом и с различными инструментами командной строки. Посмотрите преобразуйте электронная книга:

ebook-convert file.pdf file.epub

2
13.05.2013, 09:51
2 ответа

Использовать while с read получить строку за один раз от канала и канала это к grep.

grep -v "\<Swap" instruments.log | \
  awk '{ idx=index($0, "MasterId=");
    masterId=substr($0, idx+length("MasterId=")+1);
    masterId=substr(masterId,1,index(masterId,"L")-3);
    print masterId; }' |\
  while read line; do
    grep -- "$line" rel.log
  done
2
27.01.2020, 21:57
  • 1
    Спасибо, Ваши работы решения, что, если я должен поместить это в сценарий оболочки? grep -v "\<Swap" instruments.log | awk '{ idx=index($0, "MasterId="); masterId=substr($0, idx+length("MasterId=")+1); masterId=substr(masterId,1,index(masterId,"L")-3); print masterId; } ' | while read line; do grep "$line" rel.log done Это дает мне syntax error: unexpected end of file –   01.02.2012, 01:44
  • 2
    Существует более простой и более быстрый путь: используйте многострочный шаблон. –  Gilles 'SO- stop being evil' 01.02.2012, 02:09

Можно передать многострочный шаблон grep, для поиска строки, которая содержит достойный любого из шаблонов. Другими словами, многострочный шаблон является разъединением шаблонов на каждой строке.

print_one_pattern_per_line | grep -f - rel.log

Кстати, Вы могли упростить print_one_pattern_per_line часть. Так как Вы называете awk так или иначе, можно сделать входное соответствие строки в нем. И Ваш код awk может быть написан более простым способом, с помощью замены регулярного выражения для удаления всего до MasterId= (предполагающий, что существует отдельное проявление MasterId= на каждой строке, потому что Ваш код соответствует первой инстанции в то время как мой regexp ниже соответствий последний экземпляр).

<instruments.log awk '
    !/(^|[[:space:]])Swap/ {
        gsub(/.*MasterId=/, "");
        $0 = substr($0, 1, index($0, "L")-3);
        print;
    }' | grep -f - rel.log
3
27.01.2020, 21:57

Теги

Похожие вопросы