Пользовательский GREP со звездочками и якорями?

В случае, если

sudo apt-get install flashplugin-nonfree

не работает (как в моем случае, и я не знаю, почему ...), вы можете попросить Opera в качестве браузера. Это единственный, который работает для меня.

PS: Я не хочу рекламировать браузер Opera, это просто единственное решение, которое каким-то образом помогло мне.

4
задан 4 May 2012 в 23:33

2 ответа

awk намного лучше для этого:

#!/bin/bash

# Usage findsku <SKU> <QTY> <DIR>
# Example: findsku 605284307892 14 ~/mydir
# Result: found ./teste.edi: SKU=605284307892, QTY=14

sku=$1
qty=$2
dir=$3

echo "looking for SKU #${sku} with QTY=${qty} in ${dir}:"

while read -r file; do
    awk -F'*' -v sku="$sku" -v qty="$qty" 'BEGIN{RS="*UP*"} $2==sku &&
    $NF==qty {print "found " FILENAME ": SKU=" sku ", QTY=" qty}' "$file"
done < <(find "$dir" -name "*.edi" -type f)

Я думаю, что это довольно понятно, и вы можете адаптироваться к любым значениям sku и qty, которые вы хотите. Но не стесняйтесь задавать любой вопрос, о котором вы хотите!

Он будет регенерировать в данном DIR, и вы можете легко адаптировать его для сканирования других файлов, кроме *.edi

4
ответ дан 25 May 2018 в 11:53
  • 1
    Если это будет работать в ehime, я повышу это, когда у меня будет больше голосов. – belacqua 4 May 2012 в 23:08
  • 2
    Это не сработало, я не уверен, если он просматривает файлы или нет? Выше был тестовый пример, поэтому 605284466346 должен иметь 17, но у меня есть нулевая прибыль от поиска с использованием * .edi? – ehime 4 May 2012 в 23:09
  • 3
    хорошо, но, как я уже сказал, его единственная 300-метровая линия, я попробую и выкопаю кусок, хотя – ehime 4 May 2012 в 23:20
  • 4
    pastebin.com/HY4mc4Dq @MestreLion no есть несколько сегментов *UP*, но весь файл является непрерывной линией, посмотрите на пастебин, и вы должны получить лучшую идею – ehime 4 May 2012 в 23:26
  • 5

awk намного лучше для этого:

#!/bin/bash

# Usage findsku <SKU> <QTY> <DIR>
# Example: findsku 605284307892 14 ~/mydir
# Result: found ./teste.edi: SKU=605284307892, QTY=14

sku=$1
qty=$2
dir=$3

echo "looking for SKU #${sku} with QTY=${qty} in ${dir}:"

while read -r file; do
    awk -F'*' -v sku="$sku" -v qty="$qty" 'BEGIN{RS="*UP*"} $2==sku &&
    $NF==qty {print "found " FILENAME ": SKU=" sku ", QTY=" qty}' "$file"
done < <(find "$dir" -name "*.edi" -type f)

Я думаю, что это довольно понятно, и вы можете адаптироваться к любым значениям sku и qty, которые вы хотите. Но не стесняйтесь задавать любой вопрос, который вы хотите об этом!

Он рекурсирует в данном DIR, и вы можете легко адаптировать его для сканирования других файлов, кроме *.edi

4
ответ дан 15 August 2018 в 19:30
  • 1
    Если это будет работать в ehime, я повышу это, когда у меня будет больше голосов. – belacqua 4 May 2012 в 23:08
  • 2
    Это не сработало, я не уверен, если он просматривает файлы или нет? Выше был тестовый пример, поэтому 605284466346 должен иметь 17, но у меня есть нулевая прибыль от поиска с использованием * .edi? – ehime 4 May 2012 в 23:09
  • 3
    хорошо, но, как я уже сказал, его единственная 300-метровая линия, я попробую и выкопаю кусок, хотя – ehime 4 May 2012 в 23:20
  • 4
    pastebin.com/HY4mc4Dq @MestreLion no есть несколько сегментов *UP*, но весь файл является сплошной линией, посмотрите на пастебин и вы должны получить лучшую идею – ehime 4 May 2012 в 23:26
  • 5

Другие вопросы по тегам:

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