구분 기호 앞 줄의 텍스트를 제거해야 합니다.
예를 들어:
(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
마지막 예에서는 패턴이 일치하지 않으므로 아무것도 잘리지 않습니다.