2013-12-19 2 views
3

5 열이있는 줄이있는 파일을 처리하는 스크립트를 bash에 쓰려면 구분 기호가 하나의 단일 공백 ​​("")이 될 것으로 기대합니다. 이외의 모든 것은 오류가 발생합니다 (1 개 이상의 공간까지). 는 예를 들어, 그 선은 법적 :이줄마다 특정 구분 기호 검사 - bash

first last 1234124 complex no 

또는

first_last 1234124 complex no 

오류로 연결되어야 first last 1234124 complex no

있다.

나는 몇 가지 명령을 시도했지만 모든 시도는 하나의 공간과 하나 이상을 처리했습니다.

귀하의 지식에 의해 공유되기를 기다리고 있습니다. 감사. 당신이 하나의 공간 (그리고 아무것도)에 에 필드 분리를 설정하는 정규 표현식을 사용하는 경우

답변

1

사용할 수 grep -qP를보고 아래 사용할 수 있습니다 :

grep -qP '^(\S+\s){4}\S+$' 

테스트 :

> s='first last 1234124 complex no' 
> grep -qP '^(\S+\s){4}\S+$' <<< "$s" && echo "valid" || echo "invalid" 
valid 

> s='first last 1234124 complex no' 
> grep -qP '^(\S+\s){4}\S+$' <<< "$s" && echo "valid" || echo "invalid" 
invalid 
+0

감사합니다. 각 플래그와 매개 변수의 역할에 대해 설명해주십시오. –

+0

-q 조용한 경우 -P, PCRE의 경우 -P,'\ (\ S + \ s) {4} \ S + $'는'\ S'가 공백과 일치하고'\ S'가 공백을 일치시키는 정규식입니다. – anubhava

1

, 당신은 문제가있는 라인이 정규식

awk -F'[ ]' 'NF != 5' file.txt