2014-01-10 2 views
1
cat file.txt | grep -x "\d*" 
grep: \Documents and Settings: Is a directory 

숫자 만있는 행에 대해 file.txt을 검색하려고하지만 grep은 파일이 아닌 파일의 와일드 카드로 표시되는 것으로 보입니다. 패턴을 지정하고 grep 할 대상을 stdin으로 지정해야합니다.파일에 grep mistaking 패턴이 있습니까?

파일에는 날짜 시간 스탬프 행이 가득 찼습니다. 일부는 문자로 끝나고 일부는 끝내지 않습니다.

20140110122200 
20131208041510M 
... 

문자로 끝나지 않는 줄만 가져 오려고합니다.

EDIT : cat으로 파이핑하는 대신 파일 이름을 설정해 보았습니다. 별로 다르지 않습니다.

C:\long\path>grep -ex "\d*" -f file.txt 
grep: \Dell: Is a directory 
grep: \Documents and Settings: Is a directory 
+1

맨 페이지가 gnuwin 패키지에 적용되었는지 확실하지 않았습니다. 여전히'-e'를 사용하거나 파일 이름을'-'로 설정하면 아무런 차이가 없습니다. –

+0

여기를보세요 : http://stackoverflow.com/questions/21051959/use-literal-in-grep-pattern-within-shell-script – Jotne

+0

@Jotne이 창문에 적용됩니까? 확장을 위해 double quote 대 single quote 규칙을 생각했다. * nix. –

답변

0

cat을 사용하여 파일을 grep에 전달하는 이유는 무엇입니까? grep에 파일 이름을 직접 지정하지 않는 것이 어떻습니까?

grep -x '\d*' file.txt 

난 당신이보고있는 실제 문제가 * 와일드 카드가 확장되고 있음을 생각합니다. 이것이 grep이 시스템에서 실제 디렉토리 ('d'로 시작하는)를 언급하는 오류를주는 이유입니다.

+0

확장을 어떻게 방지 할 수 있습니까? –

+0

@CoreyOgburn : 일반 Windows 명령 프롬프트 (cmd.exe)에서 명령을 실행하고 있습니까? (즉, msys, cygwin 또는 powershell과 같은 다른 쉘이 아님) –

+0

예. 일반 cmd입니다. –