Linux 서버에 다음 콘텐츠가 포함된 큰 텍스트 파일이 있습니다. 예를 들면 다음과 같습니다.
123456789012345,00,0000,0000
1234567890123450,00,0000,000
12345678901b111,0,0000,0000
1234567/89011111,00,0000,00000
산출
12345678901b111,0,0000,0000 line# 3
1234567/8011111?,00,0000,00000 line# 4
그래서 내 목표는 다음과 같습니다.
나는 라인을 grep하고 싶습니다.
not 15 or 16 digits only before first comma
not 2 digits only before second comma
not 3 or 4 digits only before third comma
not 3 or 4 digits only after third comma
**the line should cover ANY of the predefined conditions**
각 줄의 줄 번호를 인쇄하고 다른 텍스트에 저장합니다.
답변1
AWK
해결책:
awk -F, '$1!~/[0-9]{15,16}/ || $2!~/[0-9]{2}/ || $3!~/[0-9]{3,4}/ || $4!~/[0-9]{3,4}/{
printf "%-35s line# %s\n",$0,NR
}' file
-F,
- 쉼표를,
필드 구분 기호로 처리printf "%-35s line# %s\n"
- 정렬/정렬된 형식의 출력
산출:
12345678901b111,0,0000,0000 line# 3
1234567/89011111,00,0000,00000 line# 4