주어진 줄의 모든 문자(숫자 제외)를 인쇄합니다.

주어진 줄의 모든 문자(숫자 제외)를 인쇄합니다.

파일이 있어요

파일 1:

Edward-201-singer
Andrew-James-404-writer

나는 출력을 원한다.

Edward
Andrew-James

답변1

숫자를 찾을 때까지 한 줄의 모든 문자를 원한다고 가정해 보겠습니다. 그런 다음 -해당 숫자 앞의 선택적 값도 제외합니다.

sed 's/-\{0,1\}[[:digit:]].*//' your-file

(GNU의 경우 . 또는 다른 것으로 sed바꿀 수 있습니다 ).\{0,1\}\?sed -E 's/-?[[:digit:]].*//'

이것은 귀하의 예제를 처리해야 하지만 더 자세한 내용이 없으면 파일의 모든 것을 처리한다고 말할 수는 없습니다.

파일을 제자리에서 변경하려는 경우 일부 sed구현 에서는 -i.baksed 명령에 a를 추가하거나(파일을 에 백업 your-file.bak하고 변경 your-file) > new-file끝에 a를 추가하여 new-file결과를 쓸 수 있습니다.

답변2

첫 번째 숫자 뒤의 대시(및 대시 숫자) 뒤의 모든 내용을 제거하려면 다음을 수행하십시오.

sed 's/-[0-9].*//' file

파일의 질문에 제공된 데이터를 기반으로 file생성

Edward
Andrew-James

질문 제목에 명시된 대로 숫자만 제거하는 것은 을 사용하여 수행할 수 tr -d '0-9' <file있지만

Edward--singer
Andrew-James--writer

...당신이 원하는 게 아닌가요?

답변3

형식에 대한 다른 정보를 모르더라도 이는 제공한 두 값 모두에 적용됩니다.

while read
do
    echo "${REPLY%-*-*}"
done < file1

관련 정보