grep — 구분 기호 토큰 후 텍스트 제거


12

;모든 줄 에서 처음 부터 모든 것을 제거 해야하는 파일이 있습니다.

따라서 다음과 같은 파일 :

sdfsdsdf;
fsdfsddf;sdfsd;

결과는 다음과 같습니다.

sdfsdsdf
fsdfsddf

나는로 보았다 grepsed. 이 명령 중 하나를 통합 한 답변에 감사드립니다.

답변:


5

sed 이 상황에서 아마도 awk 또는 perl보다 쉽고 빠릅니다.

sed 's/^\([^;][^;]*\);.*$/\1/' some_file_name

6
이보다 더 복잡합니다! sed 's/;.*//'
Gilles 'SO- 악마 그만'

나는달라고 간청한다. perl -pe 's /;.*//'some_file_name은 큰 파일에서 작동 할 때와 마찬가지로 쉽고 1500 % 더 빠릅니다.
코드 헤드

sed를 사용할 수 있지만 perl을 사용할 수없는 시스템이 여러 개 있으므로 더 가벼운 솔루션을 사용하는 것이 좋습니다.
dubiousjim 2016

7

다른 옵션은 cut명령 을 사용하는 것입니다

cat a.file | cut -d';' -f1

9
고양이의 쓸모없는

3

나는 일반적으로 awk다음과 같은 것들을 사용 합니다 :

cat a.file | awk -F=";" '{ print $1 }'

파일의 각 줄을 가져 와서 구분 기호 앞에 첫 번째 그룹을 인쇄합니다. -F



1
두 번째 데니스. 그리고 리눅스와 BSD에서 -F = ";" 의도 한대로 작동하지 않습니다. 그리고 당신은 그 $ 1을 인용하고 싶을 수도 있습니다 : awk -F ";" '{print $ 1}'a.file
코드 헤드

2

GNU를 사용하여 수행하는 방법은 다음과 같습니다 grep.

grep -Po "^[^;]+(?=;?)" filename

Gnu grep이 없으면 grep -Eo '^[^;]+;' filename거의 얻을 수 없으며 한 문자 만 너무 많이 인쇄합니다. grep -Eo '^[^;]+' filename거의 그것을 얻지 만 아무것도없는 완전한 (빈이 아닌) 줄을 인쇄합니다 ;.
dubiousjim
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.