주어진 양식을 포함하는 줄만 sed하는 방법은 무엇입니까?

주어진 양식을 포함하는 줄만 sed하는 방법은 무엇입니까?

입력은 다음과 같습니다.

asdfZE3033141xycf
asdfINSFRHxycf

다음 출력이 필요합니다.

asdfZE3033141

asdfINSFRHxycf

그래서 나는 하나를 사용했습니다 :

echo -e 'asdfZE3033141xycf\nasdfINSFRHxycf' | sed '/asdfZE3033141xycf/ s=xycf$=\n='

하지만 일반적으로 이것이 필요합니다. 그래서 나는 매번 sed를 해야 합니다:

asdfZE[0-9][0-9][0-9][0-9][0-9][0-9][0-9]xycf

텍스트 파일의 줄. "[0-9]"를 sed에 넣을 수 없습니다. 어떻게 해야 하나요?

답변1

직업을 약간 수정해 보는 것은 어떨까요?

echo -e 'asdfZE3033141xycf\nasdfINSFRHxycf' | sed -e 's/^\(asdfZE[0-9]\{7\}\)xycf$/\1\n/'

답변2

"[0-9]"에 어떤 문제가 있나요? 왜 sed에 넣을 수 없나요?

사용할 때 간단하게 사용할 수 있습니다.

sed '/asdfZE[0-9][0-9][0-9][0-9][0-9][0-9][0-9]xycf/s=xycf$=\n=' file

심지어

sed '/asdfZE[0-9]\{7\}xycf/s=xycf$=\n=' file

sed는 검색 모드에서 정규식을 지원합니다.

답변3

니가 무슨 말하는지 모르겠어.

무엇에 대해:

sed 's/^\(asdfZE[0-9]\{7\}\)xycf$/\1\
/'

? (백슬래시 뒤에 실제 개행 문자가 오는 것은 s( 대신 ) 명령 오른쪽에 개행 문자를 삽입하는 표준 방법입니다 \n.

관련 정보