나는 가지고있다
입력하다:
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"
- 쉘에서 이스케이프 \
하고 정규식에서 매번 다시 이스케이프합니다. 실제로 이 경우 모든 특수 문자가 올바르게 이스케이프되므로 큰따옴표가 필요하지 않습니다. - 셸에서 백슬래시를 통해 이스케이프하고 정규식에서 set을 사용합니다. - 예, 예제는 POSIX 호환 환경에서 실행되어야 합니다! 큰따옴표 문맥에서 특수 문자나 개행 문자 앞에 오지 않는 한 큰따옴표 사이는 그 자체를 나타냅니다. 귀하의 경우에는 쉘처럼 보이거나 POSIX 표준을 따르지 않습니다.\
\
sed "s/[\\]//g"
\
[
]
sed "s/[\]//g"
\
$`"\
sed
그리고아포스트로피사용 중인 문자열을 사용하거나 더 짧은 방법을 사용할 수도 있습니다.
sed 's/[\]//g'
sed 's/\\//g'
답변2
백슬래시를 피해야 합니다. 이 시도:
sed 's/\\//g'
답변3
sed 솔루션이 필요하지 않으면 다음을 시도하십시오.
$ echo "NISHA =\455"| awk -F'\' '{print $1 $2}'
$ echo "NISHA =\455"| tr '\\' ' '
$ echo "NISHA =\455"| tr -d '\\'
$ echo "NISHA =\455"| cut -c 1-7,9-11
답변4
sed 's/\\//'
대부분의 특수 문자와 마찬가지로 앞에 하나를 배치합니다 \
.\