여기 내 파일이 있습니다test.csv
bonjour|b|french;deutsch|french
hello|h|english;russian|french
gutentag|g|german;polish|french
ciao|i|italian|french
세 번째 분할이 | 프랑스어입니다(프랑스어는 다른 분할에 있을 수 있으므로 세 번째 것만 가능). 이와 일치하는 모든 줄을 다른 파일에 넣습니다.
예 :
bonjour|b|french;deutsch|french
french;deutsch
일치시키다
다음과 같은 것awk -F | '$3=="french"' file
답변1
awk -F '[|;]' '$3 == "french"' file >newfile
이는 필드 구분 기호로 |
및 를 모두 사용 ;
하고 세 번째 필드와 string 사이의 문자열 비교를 수행합니다 french
. 문자열이 일치하면 해당 행이 출력됩니다. 모든 출력은 파일로 리디렉션됩니다 newfile
.
사용하는 경우오직 |
구분 기호로 세 번째 필드 시작 부분에 정규식을 사용하여 테스트해야 합니다.
awk -F '|' '$3 ~ /^french;/' file >newfile
french;
이는 세 번째 필드의 시작 부분에서 문자열을 감지 하고 일치하는 경우 줄을 출력합니다.
세 번째 로 구분된 필드(예: ) french
의 어느 위치에나 발생할 수 있는 경우 해당 패턴을 약간 완화하여 사용할 수 있습니다.|
dutch;french
awk -F '|' '$3 ~ /french/' file >newfile
grep
|
일치시킬 -구분된 필드를 정확히 지정하는 것이 더 어렵기 때문에 여기에서 사용하기가 약간 어색할 것입니다 .
grep '^\([[:alpha:]]\{1,\}|\)\{2\}french;' file >newfile
이는 알파벳 문자(문자) |
, 문자 두 번, 문자열 의 문자열과 일치합니다 french;
.
확장 정규식을 사용하면 다음과 같습니다.
grep -E '^([[:alpha:]]+\|){2}french;' file >newfile
이제 |
대체로 해석되지 않도록 이스케이프해야 합니다.
다시 말하지만, 세 번째 필드 내 어디에서나 발생할 수 있는 경우 french
표현식을 약간 완화해야 합니다.
grep '^\([[:alpha:]]\{1,\}|\)\{2\}[^|]*french' file >newfile
또는,
grep -E '^([[:alpha:]]+\|){2}[^|]*french' file >newfile
단어 앞의 문자 가 아닌 부분 (예: 문자열 ) [^|]*
과 일치하는 를 삽입하고 단어 끝 부분 의 를 제거했습니다 (또는 by 로 대체할 수도 있음 ).|
french
dutch;
;
;
[;|]