
현재 저는 매개 변수를 기반으로 구성 파일에서 영역 레코드를 검색한 다음 해당 출력을 사용하여 텍스트 파일을 만들고 해당 출력 파일에서 소스 파일 경로를 읽는 스크립트를 작성 중입니다. 이제 텍스트 파일을 생성해야 하기 때문에 모듈이라는 매개 변수를 하나 더 전달해야 합니다.
내 거스크립트:
#!/bin/bash
SOURCE_CONF="./test.properties"
#input region name
region="$1"
echo $region
cwd=$(pwd)
calu=$(grep $region test.properties > ab.txt)
IFS=$'\n'
#loop to read the config one line at a time
while read p; do
echo $p
a=($(echo "$p" | tr '|' '\n'))
echo "Region is:" "${a[0]}"
echo "path is:""${a[3]}"
path="${a[3]}"
#remove white space before path
echo $cwd
NO_LEAD_SPACE="$(echo -e $path | tr -d '[:space:]')"
echo "path is:"$NO_LEAD_SPACE
# change to path spacified in the config file
sh -c 'cd $NO_LEAD_SPACE && echo "in the subshell" && echo $pwd && echo "exit subshell" && exec pwd'
echo $cwd
echo "--------------------"
done < ab.txt
echo "abc"
내 거구성 파일:
region | Module |country code | filepath |filename
APJ | WDMD | MYS |/c/Users/vattikun/desktop | MYS*ADPGV*.XML
APJ | WDED | EUR|/c/Users/vattikun/desktop/Payroll Support | EUR*ADPGV*.XML
APJ | WDMD | RER|/c/Users/vattikun/desktop/Payroll Support | RER*ADPGV*.XML
APJ | WDJD | EYZ|/c/Users/vattikun/desktop/Payroll Support | EYZ*ADPGV*.XML
EMA | WDMD | AUS|/c/Users/vattikun/desktop | AUS*ADPGV*.XML
EMA | WDMD | AYS| /c/Users/vattikun/desktop | AYS*ADPGV*.XML
AMS | WDMD |ITI| /c/Users/vattikun/desktop | ITI*ADPGV*.XML
AMS |WDMD |AYS| /c/Users/vattikun/desktop | AYS*ADPGV*.XML
ETIME | WDMD |ADP /c/Users/vattikun/desktop | ADP_WDET_JOBCODE*.XML
ETIME | WDMD |AEP| /c/Users/vattikun/desktop | AEP_WDET_JOBCODE*.XML
답변1
귀하가 요청한 특정 질문에 대답하려면 한 필드를 건너뛰는 패턴으로 검색 표현식을 시작하십시오.
module="$2"
/bin/grep "^[^|]*| *${module}\\>" test.properties
그것을 파괴:
^ Start of line
[^|]* 0 or more non-separator characters
| A field separator
* 0 or more spaces
${module} Switch from single- to double-quotes to interpolate variable name
\\> End of a word ("\\>" becomes '\>' when shell parses it)
awk
그러나 다음과 같은 것을 사용하는 것이 더 나을 것입니다 perl
.
awk -F' *\\| *' -v module="$module" '$2 == module' test.properties
장기적으로는 CSV와 같은 잘 알려진 형식과 그에 맞는 도구를 사용하는 것이 좋습니다.