여러 줄이 포함된 대용량 파일이 있고 다음 조건 중 하나에 해당하는 모든 줄을 이스케이프(제거)하고 싶습니다.
- 줄
/*!
은 또는로 시작합니다.'/*!
- 줄은 로 시작
#
하고 그 뒤에 하나 이상의 (+) 공백, 숫자 또는 숫자가 옵니다.
다음을 사용하고 있지만 egrep -v
모든 시도가 실패했습니다.
cat File.log | egrep -v '^(/*!)|^(#[ a-zA-Z0-9]+)'
답변1
당신은 이것을 시도 할 수 있습니다grep
$ grep -Ev "^'?/\*!|^#[ [:alpha:][:digit:]]+" input_file
답변2
당신이 사용할 수있는
grep -vE "^'"'?/\*!|^#[ a-zA-Z0-9]+' file
또는
grep -vE ^\''?/\*!|^#[ a-zA-Z0-9]+' file
^'
패턴 주위에 작은따옴표를 삽입하고 사용하는 것이 까다로워서 첫 번째 부분에는 큰따옴표를 사용하고 이후 패턴 부분에는 작은따옴표를 사용했습니다. 두 번째 예에서는 ^
문자 그대로의 의미가 유지되고 시작 전에 '
이스케이프 됩니다 .\'
'
POSIX 문자 클래스를 사용할 수 [:alnum:]
있으며 [a-zA-Z0-9]
탭과 공백을 일치시키려면 다음을 사용할 수 있습니다 [:blank:]
.
grep -vE "^'"'?/\*!|^#[[:blank:][:alnum:]]+' file