Cygwin を使用すると、上記のコマンドが機能しませんでした。目的の結果を得るには、上記のコマンドを変更する必要がありました。
$ cat > file.txt <<EOL
> data
> datalater
> 983290842
> Data387428later
> datafhj893724897290384later
> 4329804928later
> EOL
私は常に、自分のファイルが期待どおりのものであることを確認したいと思っています。
$ cat file.txt
data
datalater
983290842
Data387428later
datafhj893724897290384later
4329804928later
$
-P
フラグを使用して Perl スタイルの式を実行する必要がありました。これは[^0-9]+
、@Tom_Cammann がその必要性を適切に指摘した を使用できないことを意味しました。代わりに.*
、パターンの次の部分に一致しない任意の文字列に一致する which を使用しました。これが私のコマンドと出力です。
$ grep -P '^[Dd]ata.*\d+later$' file.txt
Data387428later
datafhj893724897290384later
$
Perl の式が必要な理由について、より良い説明ができればと思いますが、Cygwin のgrep
動作が少し異なることだけは知っています。
システム情報
$ uname -a
CYGWIN_NT-10.0 A-1052207 2.5.2(0.297/5/3) 2016-06-23 14:29 x86_64 Cygwin
以前の回答からの私の結果
$ grep '^[Dd]ata[^0-9]*\d\+later$' file2.txt
$ grep '^[Dd]ata\d+later$' file2.txt
$ grep -P '^[Dd]ata[^0-9]*\d\+later$' file2.txt
$ grep -P '^[Dd]ata\d+later$' file2.txt
Data387428later
$