ファイルの各行に最初に表示される数字を見つける

ファイルの各行に最初に表示される数字を見つける

ファイルの各行に最初に表示される番号をキャプチャする方法はありますか?

testたとえば、次のような内容のファイルがあります。

AA111 1 DFJKD BKJ3 () A G C TT

BB112 DKFJ 32 JDKFJ JE () DF

113 BDNF 33 3()

希望の出力は

111

112

113

入力の各行は英数字(たとえば、文字または数字、特殊文字なし)で始まります。

ベストアンサー1

以下はいくつかの方法です。

sed 's/^[^0-9]*\([0-9]\+\).*/\1/' test
cat test | tr -c '0-9\n' ' ' | while read first rest; do echo $first; done
gawk -F '[^0-9]+' '{print $2}' test  # requires non-digits to start line
perl -nE'say/(\d+)/?$1:""' test      # code golf

大きな打撃:

while read line; do [[ $line =~ [[:digit:]]+ ]] && echo ${BASH_REMATCH[0]} || echo; done

おすすめ記事