아래 텍스트를 파이프로 구분 된 한 줄로 바꾸려고합니다. 텍스트가 number %로 시작하면 오류가 발생합니다. 문제는 무엇이며 다른 명령이 있습니다.
txt 파일의 샘플 콘텐츠
PROMOTIONAL - ATL
36% Extra Money : NML 60=65(Rs.47.85 now, rest Rs.17.15 in 48hrs) + A&B @20p/m + ACCC DD for 11 day. 100=100 1 days.
2017-11-21
09:00 AM
10:00 PM
ENGLISH
OR
0.0
10
다음을 사용하는 awk 명령 :
awk '{printf NR==1?$0:"|"$0}' text
오류:
PROMOTIONAL - ATLawk: (FILENAME=text FNR=2) fatal: not enough arguments to satisfy format string</br>
`|36% Extra Money : NML 60=65(Rs.47.85 now, rest Rs.17.15 in 48hrs) + A&B @20p/m + ACCC DD for 11 day. 100=100 1 days.'
^ ran out for this one
문제는 첫 번째 인수가 printf
형식 문자열이어야한다는 것입니다. 형식 문자열에서 퍼센트 기호는 특별히 처리됩니다. %
기호가 포함 된 입력 문제를 방지하려면 다음을 시도하십시오.
$ awk '{printf "%s",(NR==1?"":"|")$0}' text
PROMOTIONAL - ATL|36% Extra Money : NML 60=65(Rs.47.85 now, rest Rs.17.15 in 48hrs) + A&B @20p/m + ACCC DD for 11 day. 100=100 1 days.|2017-11-21|09:00 AM|10:00 PM|ENGLISH|OR|0.0|10
여기서 printf의 첫 번째 인수는 형식 문자열입니다 %s
. %s
에 지시는 두 번째 인수를 가지고 문자열로 포맷을 awk가. 두 번째 인수는 포함 %
하거나 포함 하지 않을 수 있지만 중요하지 않습니다.
또는 동등하게 다음을 사용할 수 있습니다.
$ awk '{printf "%s%s",(NR==1?"":"|"),$0}' text
PROMOTIONAL - ATL|36% Extra Money : NML 60=65(Rs.47.85 now, rest Rs.17.15 in 48hrs) + A&B @20p/m + ACCC DD for 11 day. 100=100 1 days.|2017-11-21|09:00 AM|10:00 PM|ENGLISH|OR|0.0|10
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다