使用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恰當地指出。相反,我使用.*
,它匹配任何不匹配模式下一部分的字符序列。這裏是我的命令和輸出。
$ 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
$
結果當使用這種表達,或@Eric,我得到的輸出沒有結果。以下是我正在使用的: grep^[D,d] ata [0-9] +更高$ filename – hdub 2013-02-17 21:49:12
沒有意識到您使用的是grep,會更新。 – 2013-02-17 21:55:23
仍然沒有骰子,甚至作爲複製/粘貼。 – hdub 2013-02-17 22:17:37