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
'programing' 카테고리의 다른 글
SQL Server의 행 간격띄우기 (0) | 2023.05.07 |
---|---|
Windows의 Git 심볼릭 링크 (0) | 2023.05.07 |
WPF 트리 보기:ExpandAll() 메서드는 어디에 있습니까? (0) | 2023.05.02 |
동일한 필드의 mongo 문서를 찾는 방법 (0) | 2023.05.02 |
두 LIST의 값 합계를 새 LIST에 추가 (0) | 2023.05.02 |