다음 형식의 파일에서 사용자 이름과 휴대폰을 가져오는 스크립트가 있습니다.
**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