programing

sed를 사용하여 문자열에서 첫 번째 X 문자를 제거하려면 어떻게 해야 합니까?

telebox 2023. 5. 7. 11:21
반응형

sed를 사용하여 문자열에서 첫 번째 X 문자를 제거하려면 어떻게 해야 합니까?

나는 작은 산업용 상자에 임베디드 리눅스용 셸 스크립트를 쓰고 있습니다.텍스트를 포함하는 변수가 있습니다.pid: 1234줄에서 첫 번째 X자를 제거하고 싶어서 1234자만 남습니다."청소"해야 할 변수가 더 많아서 첫 번째 문자 X개를 잘라내야 합니다.${string:5}내 시스템에서 어떤 이유로 작동하지 않습니다.

그 상자가 가지고 있는 것처럼 보이는 유일한 것은sed.

저는 다음과 같은 일을 하기 위해 노력하고 있습니다.

result=$(echo "$pid" | sed 's/^.\{4\}//g')

아이디어 있어요?

다음이 작동해야 합니다.

var="pid: 1234"
var=${var:5}

확실하니bash셸이 스크립트를 실행하고 있습니까?

POSIX 호환 제품도

var=${var#?????}

외부 프로세스를 사용하는 것보다 더 바람직하지만, 이렇게 하려면 고정 길이 패턴의 형태로 5를 하드 코딩해야 합니다.

다음은 다음을 사용하여 첫 번째 X자를 자를 수 있는 간결한 방법입니다.cut(1)이 예에서는 5번째 문자로 시작하는 부분 문자열을 잘라 처음 4개 문자를 제거합니다.

echo "$pid" | cut -c 5-

사용-r옵션("스크립트에서 확장된 정규식 사용"):sed을 이용하기 위하여{n}구문:

$ echo 'pid: 1234'| sed -r 's/^.{5}//'
1234

문자열에서 처음 두 문자 잘라내기:

$ string="1234567890"; echo "${string:2}"
34567890

파이프로 통과시키다awk '{print substr($0,42)}'여기서 42는 삭제할 문자 수보다 하나 더 많습니다.예:

$ echo abcde| awk '{print substr($0,2)}'
bcde
$

당신도 그럴 가능성이 있습니다.그렇다면:

[me@home]$ echo "pid: 1234" | cut -d" " -f2
1234

음, 여기에 해결책이 있습니다.sed,awk,cut및 사용bash통사론저는 단지 다른 POSIX 적합 변형을 넣고 싶습니다.

$ echo "pid: 1234" | tail -c +6
1234

-c입력 데이터의 끝에서 계산하여 시작할 바이트 오프셋을 꼬리에 알려줍니다. 단, 숫자가 다음으로 시작할 경우+부호, 입력 데이터의 시작부터 끝까지입니다.

다른 방법으로, 사용cut대신에sed.

result=`echo $pid | cut -c 5-`

저는 이 질문에 의해 제공된 순수한 답을 찾았습니다(인정하건대, 이 질문이 게시된 후 게시됨).이것은 당신이 요청한 것과 정확히 일치합니다.

result=\`echo "$pid" | sed '/./ { s/pid:\ //g; }'\``

의 점sed '/./일치시킬 항목입니다.당신의 질문은 정확히 제가 시도했던 것입니다. 다만 저의 경우에는 파일의 특정 행을 일치시킨 다음 주석을 달았습니다.제 경우에는 다음과 같습니다.

# Uncomment a line (edit the file in-place):
sed -i '/#\ COMMENTED_LINE_TO_MATCH/ { s/#\ //g; }' /path/to/target/file

-i끝나고sed파일을 편집하는 것입니다(파일을 편집하기 전에 일치하는 식을 테스트하려면 이 스위치를 제거하십시오).

(이 질문이 질문한 대로 전적으로 sed로 이 문제를 해결하고 싶었기 때문에 이 글을 올렸습니다.)

처음부터 n자를 제거하는 대신 숫자를 직접 추출할 수 있습니다.그런 식으로...

$ echo "pid: 1234" | grep -Po "\d+"

이는 보다 강력한 솔루션일 수 있으며 보다 직관적인 것으로 보입니다.

이렇게 하면 다음과 같은 작업도 수행할 수 있습니다.

echo "$pid"|awk '{print $2}'

언급URL : https://stackoverflow.com/questions/11469989/how-can-i-strip-first-x-characters-from-string-using-sed

반응형