"^"를 공백으로 바꾸는 방법은 무엇입니까?

"^"를 공백으로 바꾸는 방법은 무엇입니까?

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)로 사용할 수 없다는 점에 유의하세요 . 그러나 대부분의 구현에서는 이를 지원합니다 . ^[...]awksub(/[\^]/, " & ", str)

관련 정보