![sed를 사용하여 파일의 단어를 제어 문자로 바꾸는 방법](https://linux55.com/image/140435/sed%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%ED%8C%8C%EC%9D%BC%EC%9D%98%20%EB%8B%A8%EC%96%B4%EB%A5%BC%20%EC%A0%9C%EC%96%B4%20%EB%AC%B8%EC%9E%90%EB%A1%9C%20%EB%B0%94%EA%BE%B8%EB%8A%94%20%EB%B0%A9%EB%B2%95.png)
파일의 해당 단어를 제어 문자로 전역적으로 바꾸는 방법. 어떻게 해야 하나요? 나는 성공하지 않고 다음을 시도했습니다.
Replace "^Aabc_def_a^B" with "^Adef_a^B" globally
다음을 시도했습니다.
sed -i 's/^Aabc_def_a^B/^Adef_a^B/g' file.txt
sed -i 's/\^Aabc_def_a\^B/\^Adef_a\^B/g'file.txt
sed 's/x01abc_def_ax02/x01def_ax02/g'
답변1
나를 위해 일하는 것 같습니다 :
$ echo -n "^Aword^B" | sed 's/^Aword^B/^Alexical unit^B/' | hexdump -C
00000000 01 6c 65 78 69 63 61 6c 20 75 6e 69 74 02 0a |.lexical unit..|
0000000f
01
대표 하다 ^A
;02
^B
캐럿( ^
) 다음에 A
또는 가 아닌 리터럴 제어 문자를 사용하고 있다는 점을 기억하세요 B
. sed
작성된 대로 명령을 입력 하려면 Ctrl- V다음에 제어 문자를 사용하여 입력으로 구문 분석하는 대신 문자 그대로 삽입하십시오 readline
.
즉, 을 삽입하려면 -를 ^A
누른 다음 -를 누르면 입력 내용이 표시됩니다 . 이 옵션 위로 화살표를 가져가면 화면에 두 문자로 구성되어 있더라도 커서가 항상 이 옵션을 단일 단위로 처리하는 것을 볼 수 있습니다.CtrlVCtrlA^A
답변2
GNU sed에서는 다음과 같이 작동합니다.\xHH
$ printf '\001foo\002\n' | sed 's/\x01foo\x02/\x01bar\x02/g' | od -c
0000000 001 b a r 002 \n
GNU sed는 없지만 Bash가 있는 경우 $''
따옴표를 사용하여 셸에서 제어 문자를 생성할 수 있습니다.
$ printf '\001foo\002\n' | sed $'s/\x01foo\x02/\x01bar\x02/g' | od -c
0000000 001 b a r 002 \n
둘 다 없다면 Perl은 항상 다음을 이해합니다.\xHH
$ printf '\001foo\002\n' | perl -pe 's/\x01foo\x02/\x01bar\x02/g' | od -c
0000000 001 b a r 002 \n
물론 에서도 같은 작업을 수행할 수 있습니다 -i
.