파일이 있어요
파일 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.bak
sed 명령에 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