sed는 "space tab" 패턴의 첫 번째 발생을 대체합니다.

sed는 "space tab" 패턴의 첫 번째 발생을 대체합니다.

텍스트 파일의 첫 번째 공백과 첫 번째 탭 사이의 문자열을 제거하는 데 문제가 있습니다 \s(탭은 유지되어야 함).\t

입력 예:

col1_frame1 unimportant    a b    c

샘플의 예상 출력:

col1_frame    a b    c

이것을 시도했지만 sed 's/ .*\t/\t/'잘못된 결과가 나왔습니다.

내 예제 출력(이전 sed 사용):

col1_frame    c

답변1

이는 .*무엇이든 일치하고(정규식 와일드카드이기 때문에) 마지막 탭이 표시될 때까지(그리고 그 사이에 다른 탭을 포함할 때까지) 가능한 한 멀리 확장할 ​​수 있기 때문입니다. 원하는 것은 [^\t]*탭 문자를 포함하지 않는 모든 문자열과 일치하는 것이므로 결합된 sed에 대한 호출은 다음과 같아야 합니다.sed 's/ [^\t]*\t/\t/'

관련 정보