system ("grep -E 'Type|group|slack (' $a > temp.rpt");
위의 라인은 여기 뭐가 문제 나에게 오류 Unmatched (or \(
시스템 GREP은
을주고있다 불균형 괄호를 준다?
전 (
전에 백 슬래시를 시도했습니다. 동일한 오류가 표시됩니다.
system ("grep -E 'Type|group|slack (' $a > temp.rpt");
위의 라인은 여기 뭐가 문제 나에게 오류 Unmatched (or \(
시스템 GREP은
을주고있다 불균형 괄호를 준다?
전 (
전에 백 슬래시를 시도했습니다. 동일한 오류가 표시됩니다.
당신은 왜 Perl로 그렇게하지, 세 개의 백 슬래시
system ("grep -E 'Type|group|slack \\\(' $a ");
구체적으로 왜 세 가지가 있습니까? – melpomene
스크립트에서 때문에를 사용할 필요가?
my $infile = '...';
open my $fh, '<', $infile or die "Can't open $file: $!";
open my $out_fh, '>', $temp.rpt or die "Can't open $temp.rpt: $!";
while (<$fh>) {
print $out_fh $_ if /Type|group|slack \(/;
}
필요에 따라 정규식을 조정하십시오. 일반적으로 지금은 변경하고 조정할 수 있습니다. 입력 파일은 당신이 파일
print $out_fh grep { /Type|group|slack \(/ } <$fh>;
grep가 <> operator에 리스트 문맥을 부과 그래서 읽고 한 번을 열어 일단 당신이뿐만 아니라 한 줄에 처리 할 수있는 너무 크지 않으면
목록의 모든 행을 반환하고 조건을 통과 한 행이 인쇄됩니다.
regex에 대한 의견. 그대로, Type
또는 group
또는 slack (
과 일치합니다. 어떤 경우라도 단어 중 하나와 일치하고 스페이스 괄호 뒤에 오는 경우 괄호 그룹화가 필요합니다 (/(?:Type|group|slack) \(/
). ?:
이 있으므로 불필요하게 캡처되지 않습니다.
(
은 grep -E
에있는 정규식 메타 문자입니다. 그래서 당신은 오류가 발생합니다.
단일 백 슬래시를 추가해도 수정되지 않습니다. perl : "\("
에 의해 처리 되었기 때문에 "("
과 같은 문자열입니다. (
기본 "POSIX 특별하지 않기 때문에
는 문제를 해결하려면, 당신은 (다음 grep
에 의해 해석 된 두 개의 문자열 \(
로 전환 "\\("
) 두 개의 백 슬래시를 사용하거나 -E
옵션을 제거하거나 필요 "정규식 (grep
은 기본적으로 사용합니다).
무엇이'$ a'입니까? 이것은 스크립트의 앞부분에 만들어진 파일 이름입니까? – zdim
['누군가 내 질문에 대답 할 때 무엇을해야합니까? '] (http://stackoverflow.com/help/someone-answers) – zdim