AWKのSedスクリプト

AWKのSedスクリプト

私はこれを頻繁にやらず、時はいつも非常に敏感です。百万を超えるファイルから数値パターンを抽出する次のsedスクリプトがあります。これをAWKに送信する必要があるため、一致するパターンが見つかると、見つかったファイル名が印刷されます。行数が多くなりますが、あまりに欲を張らないでください。

希望の出力

ファイル名1 000-323423-33

ファイル名2 000-323423-33

ファイル名3 000-323423-33

いろいろな方法を試してみましたが、役に立ちません。経験のある人は私に正しい指示を提供できますか?よろしくお願いします!

#!/bin/sh

#shopt -s nullglob
FILES=/mnt/c/temp/1/*.txt
for f in $FILES

do
    echo "Processing $f"
    sed -nr \
        -e '/[0-9]{3}-[0-9]{6}-[0-9]{2}/{
            s/.*([0-9]{3}\-[0-9]{6}\-[0-9]{2}).*/\1/
            G
            p 
            }' $f 
done

ベストアンサー1

あなたがやっていることがまさにあなたの使命のようですgrep。コロンが本当に必要でない場合は、trファイル名にコロンが含まれていないとし、 を使用してコロンを空白に変更します。

grep -Eon '[0-9]{3}-[0-9]{6}-[0-9]{2}' *.txt | tr ':' ' '

出力は次のようになります。

file1 10 000-323423-33
file2 20 000-323423-34
file3 30 000-323423-35
file3 31 000-323423-36

おすすめ記事