数字で始まるすべての単語をgrepする方法を知りたいです。これまで私は次のことをしました。
egrep "^[[:digit:]]" tst
しかし、数字で始まる行だけを印刷します。
助けてくれてありがとう。
答え1
grep
Perl 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
これは、それぞれ単語の始まりと単語の終わりのマークとしてとを\<
使用します。\>