次のようなテキストがたくさんあります(テストとデータをできるだけ単純にするため)。
first 1 is the real 2 time the word matched 3
appeared on the previous line but is 4 the fourth.
Every line can have more numbers 5 because numbers 6 are everywhere
I need to extract the number just after the word 7 that precedes 8
grep
単語の後に続く最初の数字を抽出するためにテストされているコマンドは次のとおりです。
grep -Eoi ' [0-9]{1}'
出力は次のとおりです
1
2
3
4
5
6
7
8
希望の出力は次のとおりです。
1
4
5
7
cut
または使用は許可されていませんawk
。
ベストアンサー1
私はこれがgrepを習得する練習だと思います。純粋なgrepソリューションは次のとおりです。
一行で:
echo "first 1 is the real 2 time the word matched 3 " |grep -Eo '[0-9]' |grep -m1 -E '[0-9]'
残念なことに、最初はgrepを使用してもgrep -m1
望ましい結果が得られませんでした。
複数行を含むファイルではループを使用する必要があります。
while read -r line; do
grep -Eo '[0-9]' <<<"$line" |grep -m1 -E '[0-9]'
done < file.txt
またはコマンドラインから:
while read -r line; do grep -Eo '[0-9]' <<<"$line" |grep -m1 -E '[0-9]';done < a.txt
出力は予想通りです。