Unix에서 ^
공백으로 바꾸는 방법은 무엇입니까?
입력하다:
ab^cd^ef
산출:
ab cd ef
이것을 시도했지만 sub(/^/, " & ", str)
출력은 입력과 동일합니다.
답변1
이 작업은 다음과 같습니다 tr
.
$ str=ab^cd^ef
$ printf '%s\n' "$str" | tr '^' ' '
ab cd ef
존재하다 bash
, ksh93
, mksh
, zsh
:
printf '%s\n' "${str//^/ }"
존재하다 zsh
:
print -rl -- "${str:gs/^/ /}"
답변2
사용 sed
,
$ echo "ab^cd^ef" | sed 's,\^, ,g'
ab cd ef
이미댓글 작성자: @jasonwryan인라인 쉘 문자열 대체를 사용할 수 있습니다.
$ str="ab^cd^ef"
$ echo "${str//^/ }"
ab cd ef
또 다른 종류, 제안자@someonewithpc
$ echo "ab^cd^ef" | sed 'y,^, ,'
ab cd ef
(참고: y
문자를 변환하는 데 사용됩니다.)
답변3
awk
당신이 그것을 당신의 것으로 바꾸고 싶다고 가정 해 봅시다.
sub(/^/, " & ", str)
^
제안 사항 은 확장된 정규식 연산자( /^/
문자열 시작 부분에서 일치를 의미) 이기 때문에 이스케이프해야 합니다 .
sub(/\^/, " & ", str)
inside 의 첫 번째 발생은 (space- -space) 로 ^
대체됩니다 . 공백으로 바꾸고 모든 항목을 바꾸는 데 사용됩니다 .str
^
^
sub(/\^/, " ", str)
gsub(/\^/, " ", str)
특별한 내부 요소 로 사용할 수 없다는 점에 유의하세요 . 그러나 대부분의 구현에서는 이를 지원합니다 . sub(/[^]/, " & ", str)
^
[...]
awk
sub(/[\^]/, " & ", str)