파일의 두 번째 열에서 0을 제거하는 방법

파일의 두 번째 열에서 0을 제거하는 방법

다음 형식의 파일에서 사용자 이름과 휴대폰을 가져오는 스크립트가 있습니다.

**Current Format**
username        mobile
zzz             03333012345
123             03212334343
245             3712323689

이제 휴대폰 번호가 "0"부터 시작하면 "0"만 제거하여 모든 휴대폰 번호가 다음과 같이 나타나도록 하고 싶습니다.

**Required format:**
username        mobile
zzz             3333012345
123             3212334343
245             371232368

(전화가 0 없이 시작되면 그대로 두세요)

답변1

다음 awk를 사용하여 두 번째 열의 선행 0만 제거되도록 할 수 있습니다.

    awk '{gsub("^0","",$2); print $1,$2}' yourfile.txt

답변2

다음 코드 조각을 사용해 보세요.

sed 's/\ [0]//g' 테스트.1

[ 앞에 공백이 있다는 점에 유의하세요.

예를 들어

root@SHW:/tmp # cat test.1 
**Current Format**
username        mobile
zzz             03333012345
123             03212334343
245             3712323689
root@SHW:/tmp # sed 's/\ [0]//g' test.1 
**Current Format**
username        mobile
zzz            3333012345
123            3212334343
245             3712323689

내 ubuntu-14.04에서 작동합니다

답변3

펄 사용:

< inputfile perl -pe 's/ 0([0-9]+)$/ $1/' > outputfile
  • -p: while (<>) {[...]}스크립트 주위에 루프를 배치하고 처리된 줄을 인쇄합니다.
  • -e:매개변수에서 스크립트 읽기

Perl 명령 분석:

  • s: 교체를 수행하도록 어설션
  • /: 시작 모드
  • 0([0-9]+)$: 줄 끝에 0 숫자가오고 그 뒤에 문자가 오는 하나 이상의 숫자를 일치시키고 그룹화합니다 .
  • /: 모드 정지/끈 교체 시작
  • $1: 공백으로 대체되고 그 뒤에 캡처된 그룹이 옵니다.
  • /:문자열 교체 중지/수정자 시작

답변4

다음을 bash사용할 수 있습니다.

while read username mobile
do
    echo "${username} ${mobile/0/}"
done < inputfile

관련 정보