>

있어

입력 :

NISHA =\455 

출력 :

NISHA = 455

\ 를 제거하고 싶습니다  출력에서. sed "s/[\]//g" P 명령을 사용하려고했습니다.  하지만 작동하지 않고 오류를 표시합니다.

character found after backslash is not meaningful

  • 답변 # 1

    예제 결과에 표시된대로 백 슬래시를 공백으로 바꿀 수 있습니다.

    sed 's/\\/ /g'
    
    

    또는 코드에 표시된대로 제거 할 수 있습니다 :

    sed 's/\\//g'
    
    
    특수 문자

    특별한 의미를 취소하기 위해 백 슬래시를 이스케이프 처리하는 데 문제가있을 수 있습니다. 백 슬래시는 쉘과 정규 표현식 모두에서 이스케이프 처리하는 데 사용되는 특수 문자입니다.

    쉘의 명령 행이나 스크립트에 입력 한 명령은 문자의 특수 의미와 이스케이프를 해석하는 쉘에 의해 먼저 처리됩니다. 그런 다음 결과는 sed 와 같이 실행될 명령으로 전달됩니다. )는 문자에 대한 자체 해석을 수행합니다. 명령을 작성할 때 정신 절차는 반대 방법입니다. 먼저 정규 표현식에 이스케이프를 추가하고 쉘에 이스케이프를 추가하십시오.

    <올>

    정규식에서( sed 와 같은 명령에 입력 grep  등) 백 슬래시는 다음과 같이 백 슬래시로 이스케이프 할 수 있습니다. \\  또한 세트 식 [\] 를 사용할 수 있습니다  백 슬래시가 특별한 의미를 잃어 버렸기 때문에 사용한 것처럼 말입니다.

    쉘에서( bash 와 같은) ) 백 슬래시로 백 슬래시를 벗어날 수 있습니다. 그래서 \ 대신  쓰기 \\ . 큰 따옴표로 묶는 문자열 "  백 슬래시 동작을 더 복잡하게 만들지 만<1>이중 백 슬래시는 여전히 단일 백 슬래시를 생성합니다. 작은 따옴표로 묶는 문자열 '   ' 를 제외한 모든 문자를 문자 그대로 처리합니다. .

    큰 따옴표를 사용하려면 다음 중 하나를 사용할 수 있습니다.
    와이즈 비즈  -탈출 sed "s/\\\\//g"  작성자 \  껍질에서 모든 \ 를 탈출  정규식에서 다시. 실제로 모든 특수 문자가 올바르게 이스케이프되므로이 경우 큰 따옴표가 필요하지 않습니다.
    와이즈 비즈  -백 슬래시 \ 에 의해 쉘에서 탈출  정규식에서 세트 sed "s/[\\]//g" 를 사용하십시오.  와이즈 비즈
    와이즈 비즈  예, POSIX 호환 환경에서 작동해야합니다. 큰 따옴표 사이 \  큰 따옴표의 문맥에서 특수 문자 앞에 오지 않는 한, 자체를 나타냅니다 : [  또는 개행. 귀하의 경우에는 쉘 또는 ] 처럼 보입니다.  POSIX 표준을 따르지 않습니다.

    작은 따옴표를 사용하면 사용한 문자열이나 짧은 방법으로도 문자열을 사용할 수 있습니다.
    와이즈 비즈
    와이즈 비즈

  • 답변 # 2

    백 슬래시를 피해야합니다. 이것을 시도하십시오 :

    sed "s/[\]//g"
    
    

  • 답변 # 3

    sed 솔루션을 원하지 않으면 다음 명령으로 시도하십시오 :

    \
    
    

  • 답변 # 4

    $`"\
    
    

    와이즈 비즈 배치   sed 전에  대부분의 특수 문자로하는 것처럼.

  • 답변 # 5

    awk에서는 이렇게하겠습니다.

    sed 's/[\]//g'
    
    
    sed 's/\\//g'

  • 이전 shell script - 한 파일에서 다른 파일로 변수 전송
  • 다음 pipe - 파이프 할 때`uniq`는 실시간이 아닙니다