입력은 다음과 같습니다.
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
.