sed を使用して各行の先頭からさまざまな長さの数値をキャプチャ

sed を使用して各行の先頭からさまざまな長さの数値をキャプチャ

次の形式のファイルに取り組んでいます。

12345:ABCDEFG

789:HIJK

4963158:LMNOPQRSTUV

各行はさまざまな長さで始まり、その後にコロン、さまざまな長さの文字列が続きます。以下のように、各行の先頭にある数字だけをキャプチャして新しいファイルに入れたいと思います。

12345

789

4963158

これは私が得たものに最も近いですが、数字だけでなく行全体を印刷します。

sed -r 's/([^0-9]+d)(:)([A-Z]+)$/\1/' example.txt >> justnumbers.txt

私が文法的に何を間違っているのだろうか?

ベストアンサー1

時には問題を別の方法で見ると、より簡単な答えが得られます。

「以前のすべての数字を維持したい」と考えるのは非常に合理的です。もう一つの観点では、「最初から最後まですべてを捨てたい」と見ることもできる。

これにより

s/:.*//

sedコマンドで。

例えば

$ cat x
12345:ABCDEFG
789:HIJK
4963158:LMNOPQRSTUV

$ sed 's/:.*//' x
12345
789
4963158

おすすめ記事