하위 구분 기호를 사용하여 첫 번째 열 수정

하위 구분 기호를 사용하여 첫 번째 열 수정

텍스트 파일이 있다고 가정해 보겠습니다.

aaa-123;bread;apple;banana
aaa-123;bread;apple;banana
aaa-123;bread;apple;banana
bbb-123;bread;apple;banana
bbb-1234;bread;app-le;banana
bbb-222;bread;apple;banana

첫 번째 열의 awk를 통해 -와; 사이의 예상 결과를 제거해야 합니다.

aaa;bread;apple;banana
aaa;bread;apple;banana
aaa;bread;apple;banana
bbb;bread;apple;banana
bbb;bread;app-le;banana
bbb;bread;apple;banana

답변1

이는 어떤 필드에 s가 포함되어 있는지, 첫 번째 필드에 s가 포함되어 있는지 여부에 관계없이 -모든 Unix 시스템의 모든 쉘에서 모든 awk와 함께 작동합니다 .

$ awk 'BEGIN{FS=OFS=";"} {sub(/-.*/,"",$1)} 1' file
aaa;bread;apple;banana
aaa;bread;apple;banana
aaa;bread;apple;banana
bbb;bread;apple;banana
bbb;bread;app-le;banana
bbb;bread;apple;banana

답변2

sed탐욕스럽지 않은(가능한 가장 짧은) 매칭 의 경우 :

sed 's/-[^;]*;/;/' infile

답변3

기능 사용 awk및 사용 :split()

awk -v FS=';' 'split($1,a,/-/) {$1=a[1];print $1, $2, $3, $4}' OFS=';' file
aaa;bread;apple;banana
aaa;bread;apple;banana
aaa;bread;apple;banana
bbb;bread;apple;banana
bbb;bread;app-le;banana
bbb;bread;apple;banana

답변4

awk '{gsub(/-[0-9]*/,"",$1);print }' filename

 sed 's/-[0-9]*//g' filename

파이썬

#!/usr/bin/python
import os
import re 
m=re.compile(r'-[0-9]*')
k=open('filename','r')
for i in k:
    m=re.sub(o,"",i)
    print m.strip()

산출

aaa;bread;apple;banana
aaa;bread;apple;banana
aaa;bread;apple;banana
bbb;bread;apple;banana
bbb;bread;apple;banana
bbb;bread;apple;banana

관련 정보