예, 다음은 주어진 사용자 입력입니다.
$ myscript.sh file-name.txt
bash 스크립트에서 '파일'을 검색하기 위해 "file-name.txt"를 트리밍하고 싶습니다.
#!/bin/bash
FILENAME=$1
# trim text after '-' from user input 'file-name.txt'
# save 'file' back to $1
내 추측으로는 sed와 정규 표현식을 어떻게 든 혼합하는 것이지만 나는 전문가가 아닙니다.
어떤 아이디어?
더 복잡한 입력을 위해 muru의 제안을 시도했습니다.
주어진 입력 : ABCD-0.1.5-6.1.txt
원하는 출력 : ABCD
#!/bin/bash
TRIMMED1="${1%-*}"
TRIMMED2="${1%%-*}"
TRIMMED3="${TRIMMED1%-*}"
TRIMMED4="${TRIMMED1%%-*}"
TRIMMED5="${1%-[0-9]*}"
TRIMMED6="${1%%-[0-9]*}"
echo "user input : $1"
echo "TRIMMED1 : $TRIMMED1"
echo "TRIMMED2 : $TRIMMED2"
echo "TRIMMED3 : $TRIMMED3"
echo "TRIMMED4 : $TRIMMED4"
echo "TRIMMED5 : $TRIMMED5"
echo "TRIMMED6 : $TRIMMED6"
결과:
user input : A-B-C-D-0.1.5-6.1.txt
TRIMMED1 : A-B-C-D-0.1.5
TRIMMED2 : A
TRIMMED3 : A-B-C-D
TRIMMED4 : A
TRIMMED5 : A-B-C-D-0.1.5
TRIMMED6 : A-B-C-D
이를 위해 외부 도구를 사용할 필요가 없습니다. 순수 bash :
FILENAME="${1%-*}"
%
일치하는 가장 짧은 접미사를 제거하는 데 사용됩니다. 당신이 가지고 있다면 file-name-foo
, 당신은 얻을 것이다 file-name
. 일치하는 가장 긴 접미사를 제거하려면 %%
.
에 저장하려면 $1
을 사용해야 set
합니다. 다음과 같은 것 :
set -- "${1%-*}" "${@:2}"
그런 다음 다음에를 사용할 때 $1
텍스트가 잘립니다.
=
변수를 할당 할 때 주변에 공백이 없어야합니다 .
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다