3개의 파일이 있다고 가정해 보겠습니다.
abc_def_12345.zip
abc_123.zip
abc_def_ghi_3432.zip
마지막 밑줄(_) 이전의 문자만 인쇄하고 싶습니다.
예상되는 출력은 다음과 같습니다.
abc_def
abc
abc_def_ghi
답변1
매개변수 확장과 함께 bash를 사용할 수 있습니다.
$ foo="abc_def_ghi_3432.zip"; echo "${foo%_*}"
$ abc_def_ghi
답변2
sed를 사용하면 시도해 볼 수 있습니다
sed -E 's/(.*)_.*/\1/'
예를 들어 이것을 복사하여 명령 프롬프트에 붙여넣으세요.
% cat << EOF | sed -E 's/(.*)_.*/\1/'
abc_def_12345.zip
abc_123.zip
abc_def_ghi_3432.zip
EOF
산출
abc_def
abc
abc_def_ghi
이 명령은 sed
의 패턴 공간 자동 인쇄를 그대로 유지합니다. 이는 패턴과 일치하지 않는(즉, _
'를 포함하지 않는) 다른 줄이 출력의 일부가 된다는 것을 의미합니다. 그렇지 않으면 이것을 원하면 사용할 수 있습니다
sed -n -E 's/(.*)_.*/\1/p'