나는 다음을 원한다
awk 'BEGIN {FS=" ";} {printf "'%s' ", $1}'
그러나 이런 식으로 작은 따옴표를 이스케이프하면 작동하지 않습니다.
awk 'BEGIN {FS=" ";} {printf "\'%s\' ", $1}'
어떻게하나요? 도와 줘서 고마워.
답변
이것은 아마도 당신이 찾고있는 것입니다.
awk 'BEGIN {FS=" ";} {printf "'\''%s'\'' ", $1}'
즉, '\''
오프닝을 닫은 '
다음 '
이스케이프 하여 리터럴을 인쇄 하고 마지막으로 '
다시 엽니 다 .
답변
답변
또 다른 옵션은 작은 따옴표 를 awk 변수로 전달하는 것입니다 .
awk -v q=\' 'BEGIN {FS=" ";} {printf "%s%s%s ", q, $1, q}'
문자열 연결을 사용한 더 간단한 예 :
# Prints 'test me', *including* the single quotes.
$ awk -v q=\' '{print q $0 q }' <<<'test me'
'test me'
답변
awk 'BEGIN {FS=" "} {printf "\047%s\047 ", $1}'
답변
작은 스크립트의 경우 읽기 쉽게 만드는 선택적 방법은 다음과 같은 변수를 사용하는 것입니다.
awk -v fmt="'%s'\n" '{printf fmt, $1}'
출력에서 작은 따옴표 문자를 여러 번 생성해야하고 \ 047이 완전히 읽을 수 없게 만드는 경우에 편리함을 발견했습니다.