スペースで区切られたデータ行を含むテキストファイルがあります。
例:
B 345678 2005-12-21 4174 1 62 11111 16543 1911 786543,45
ただし、間隔がわずかに一致せず、時には追加されたタブもあると思われます。すべての行に常に表示される番号「62」の前の行を切り取る方法を見つける必要があります。この数字は常にすべての行に表示され、時には5桁の数字が続き、その後には常に別の5桁の数字が続きます。また、不一致のリスクを最小限に抑えるために、62の前にスペースを追加しました。
これまで私はこれを思い出しました。
grep " 62 [1-9][0-9][0-9][0-9][0-9] " file
これにより、5桁の数字が表示される行のみが提供されます。 62をgrepし、その後にオプションで5桁の数字、次に必要な5桁の数字を入力する方法が必要です。
これは可能ですか?
/ポール
ベストアンサー1
62をgrepし、その後にオプションで5桁の数字、次に必要な5桁の数字を入力する方法が必要です。
これは、後に1〜2個の5桁の数字があると言うのと同じで62
、最初の数字だけを一致させるだけで十分です。さまざまな数のスペースを処理するのは簡単です。を使用する␣+
か、[[:space:]]+
タブを含めることができます。
だから、
grep -E ' 62 +[1-9][0-9]{4} '
または
grep -E '[[:space:]]62[[:space:]]+[1-9][0-9]{4}[[:space:]]'
もちろん、行全体が印刷されます。 62から始まる部分のみが必要な場合は、.*
行末に一致するように追加し、-o
一致する部分のみを印刷します。
grep -o -E '[[:space:]]62[[:space:]]+[1-9][0-9]{4}[[:space:]].*'