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'