Grep/sed/awk 조합을 사용하여 파일의 한 줄에서 패턴을 제거합니다. 패턴은 다른 열입니다.

Grep/sed/awk 조합을 사용하여 파일의 한 줄에서 패턴을 제거합니다. 패턴은 다른 열입니다.

큰 파일에 두 개의 열이 있고(또는 두 개의 파일로 분할될 수 있음) 주/지역 열에서 중복된 도시 이름을 제거해야 합니다.

los angeles      los angeles ca, usa, west
new york         new york ny, usa, east
vancouver        vancouver bc can, west
...

첫 번째 열을 변수 및 패턴 일치로 만들고 두 번째 열에서 제거할 수 있나요?

답변1

awk, 및 입력 파일 사용

los angeles     los angeles ca, usa, west
new york        new york ny, usa, east
vancouver       vancouver bc can, west
paris   france paris, europe
berlin  germany berlin
mardrid ola, spain

열이 적절하게 탭으로 구분되어 있습니다.

awk -F\\t '{if (i=index($2,$1)) $2=substr($2,0,i-1) substr($2,i+length($1)) ; print }' u

어디

  • -F\\t탭 문자를 구분 기호로 사용
  • i=index($2,$1)$2에서 $1에 대한 검색 횟수
  • if ( )발견되면...
  • $2=substr($2,0,i-1) substr($2,i+length($1))$2를 $1을 제거하는 하위 문자열로 바꿉니다($1이 한 번만 발생한다고 가정).
  • print결과 인쇄

결과

los angeles  ca, usa, west
new york  ny, usa, east
vancouver  bc can, west
paris france , europe
berlin germany
mardrid ola, spain

관련 정보