数字で始まるすべての単語を見つける方法は?

数字で始まるすべての単語を見つける方法は?

数字で始まるすべての単語をgrepする方法を知りたいです。これまで私は次のことをしました。

egrep "^[[:digit:]]" tst

しかし、数字で始まる行だけを印刷します。

助けてくれてありがとう。

答え1

grepPerl Compatible RegExp( ) をサポートしている場合は、-P次のことができます。

grep -Po '(?<=^|\s)\d[^\s]*(?=\s|$)' file.txt
  • wordスペースだけで区切られた文字を意味すると仮定します。

  • ?<=^|\s)幅0の順方向検索モードで、目的の単語の前に行の先頭またはスペースが続きます。

  • \d[^\s]*私たちが望む一致です。数字で始まる単語です。

  • (?=\s|$)幅0の肯定的な予測モードで、目的の一致の後にスペースまたは行末が続くことを確認します。

答え2

数字で始まる単語のリストを1行に1つずつ印刷するには、次のようにします。

tr -cs '[:digit:][:alpha:]' '\n' | grep '^[:digit:]'

このtrコマンドは、すべての英数字文字列を1行に1つずつリストします。その後、grepは行の先頭の数字だけを見ます。

答え3

私はお勧めします

echo "foo bar 11baz q3ux
one, 2two? three!" | grep -o '\<[[:digit:]][^[:blank:]]*\>'
11baz
2two

これは、それぞれ単語の始まりと単語の終わりのマークとしてとを\<使用します。\>

関連情報