[bash] sed를 사용하여 문자열에서 첫 번째 X 문자를 어떻게 제거 할 수 있습니까?

작은 산업 상자에 임베디드 Linux 용 쉘 스크립트를 작성하고 있습니다. 텍스트를 포함하는 변수가 있습니다pid: 1234 있고 줄에서 첫 번째 X 문자를 제거하려고하므로 1234 만 유지됩니다. 더 많은 변수를 “정리”해야하므로 X 첫 문자를 잘라 내야하며 ${string:5}시스템에서 어떤 이유로 작동하지 않습니다.

상자가 가지고있는 유일한 것은 sed .

다음을 작동 시키려고합니다.

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

어떤 아이디어?



답변

이것은 또한 일을 할 것입니다 :

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


답변

다음이 작동해야합니다.

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
$


답변

기회도있을 cut것입니다. 그렇다면:

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