다음과 같은 텍스트 파일이 있습니다.
229;39;45;11;21;33;13
230;56;44;41;40;08;53
231;16;59;27;42;44;36
232;29;19;41;22;37;59
233;45;03;24;36;07;32
SP;SP;SP;;;;
234;15;45;54;25;42;41
235;29;41;55;02;31;22
236;10;52;50;57;25;60
237;36;07;45;31;56;57
238;15;09;41;13;37;42
SP;SP;;;;;
239;33;21;44;46;47;06
240;59;28;25;41;57;38
241;11;57;40;35;56;31
242;22;07;04;21;28;56
243;20;47;23;32;16;11
244;19;60;50;24;47;33
245;44;51;27;53;08;60
MG;;;;;;
올바른 줄은 세미콜론으로 구분된 일련의 7개 숫자입니다. MG;;;;;;
또는 와 같이 임의의 위치에 정크 행인 행이 있습니다 .SP;SP;;;;;
수천 줄이 포함된 파일에서 이러한 잘못된 줄을 제거하고 일련의 7개 숫자가 있는 줄만 유지하려면 터미널에 어떤 명령을 입력해야 합니까?
답변1
grep -Ex '[0-9]+(;[0-9]+){6}'
...입력 데이터를 기반으로 다음 출력을 생성합니다.
229;39;45;11;21;33;13
230;56;44;41;40;08;53
231;16;59;27;42;44;36
232;29;19;41;22;37;59
233;45;03;24;36;07;32
234;15;45;54;25;42;41
235;29;41;55;02;31;22
236;10;52;50;57;25;60
237;36;07;45;31;56;57
238;15;09;41;13;37;42
239;33;21;44;46;47;06
240;59;28;25;41;57;38
241;11;57;40;35;56;31
242;22;07;04;21;28;56
243;20;47;23;32;16;11
244;19;60;50;24;47;33
245;44;51;27;53;08;60
답변2
그리고 sed
:
sed -n '/^[0-9][0-9]*\(;[0-9][0-9]*\)\{6\}$/p' <infile
답변3
egrep '^[0-9]+;[0-9]+;[0-9]+;[0-9]+;[0-9]+;[0-9]+;[0-9]+$' file > temp && mv temp file
답변4
이는 다른 예제만큼 강력하지는 않지만 간단한 경우에는 작동합니다.
grep -v ';;'
또는
grep [[:digit:]]