곧은 작은따옴표와 큰 따옴표를 큰따옴표( ‘ ’
, )로 바꾸고 싶습니다 . “ ”
쉘 명령을 사용하여 이 작업을 어떻게 수행할 수 있습니까?
답변1
이 입력 파일을 사용하십시오(제공:화상):
$ cat file
When 'chapmen billies' lea "the street" and 'drouthy' neebors "neebors" meet.
그리고 어떤 이상한 :
awk '{
while ( match($0,/\047[^\047]*\047/) ) {
$0 = substr($0,1,RSTART-1) "‘" substr($0,RSTART+1,RLENGTH-2) "’" substr($0,RSTART+RLENGTH)
}
while ( match($0,/"[^"]*"/) ) {
$0 = substr($0,1,RSTART-1) "“" substr($0,RSTART+1,RLENGTH-2) "”" substr($0,RSTART+RLENGTH)
}
print
}' file
When ‘chapmen billies’ lea “the street” and ‘drouthy’ neebors “neebors” meet.
위의 내용은 인용문이 항상 쌍으로 온다고 가정합니다.
답변2
UTF perl
-8 로케일:
perl -C -0777 -pi.back -e '
s/\N{QUOTATION MARK}(.*?)\N{QUOTATION MARK}/\N{LEFT DOUBLE QUOTATION MARK}$1\N{RIGHT DOUBLE QUOTATION MARK}/gs;
s/\N{APOSTROPHE}(.*?)\N{APOSTROPHE}/\N{LEFT SINGLE QUOTATION MARK}$1\N{RIGHT SINGLE QUOTATION MARK}/gs
' your-files
(원본 백업에는 접미사가 붙습니다 .back
. .back
백업이 마음에 들지 않으면 삭제하십시오.)