Linux에서 구분 기호 앞의 텍스트를 제거하는 방법

Linux에서 구분 기호 앞의 텍스트를 제거하는 방법

구분 기호 앞 줄의 텍스트를 제거해야 합니다.

예를 들어:

(123434): hello::{apple,orange,mango}.

먼저 이전 텍스트를 삭제해야 합니다 :. 즉 (123434).

이 작업을 수행할 수 있는 명령이 Linux에 있습니까?

답변1

sed명령은 트릭을 수행해야 합니다. 다음 명령은 파일을 덮어씁니다.

sed -i 's/^[^:]*:/:/' file

출력만 인쇄하려면 이 -i플래그를 제거하십시오. 출력을 새 파일에 넣으려면 플래그를 제거 -i하고 출력을 리디렉션합니다.

sed 's/^[^:]*:/:/' file > new_file

답변2

당신은 그것을 사용할 수 있습니다 cut:

echo '(123434): hello::{apple,orange,mango}.' | cut -d: -f2-

답변3

아주 간단한 방법으로 이 작업을 수행할 수 있습니다.불다지침:

mytext="(123434): hello::{apple,orange,mango}."

echo ${mytext#*)}

유사한 방식으로 접두사와 접미사를 잘라낼 수 있습니다 : hello::{apple,orange,mango}.. 또한 접두사 및 접미사 정의에는 와일드카드 문자가 포함될 수 있습니다.

접두사 잘라내기 - 첫 번째 접두사 와일드카드가 일치할 때까지:${variable#prefix}

접두사 잘라내기 - 마지막 접두사 와일드카드가 일치할 때까지:${variable##prefix}

접미사 잘라내기 - 첫 번째 접미사 와일드카드 일치까지:${variable%suffix}

접미사 잘라내기 - 마지막 접미사 와일드카드 일치까지:${variable%%suffix}

언뜻 보기에는 이해하기 어려울 수 있습니다. 아래 예를 살펴보세요.

mytext="xAxBxAxBx"
echo ${mytext#*A}    # will print: xBxAxBx
echo ${mytext##*A}   # will print: xBx
echo ${mytext%B*}    # will print: xAxBxAx
echo ${mytext%%B*}   # will print: xAx
echo ${mytext%%C*}   # will print: xAxBxAxBx

마지막 예에서는 패턴이 일치하지 않으므로 아무것도 잘리지 않습니다.

관련 정보