私は現在、パラメータに基づいて設定ファイルからゾーンレコードを取得し、その出力を使用してテキストファイルを作成し、その出力ファイルからソースファイルパスを読み取るスクリプトを作成しています。これでテキストファイルを生成する必要があるため、モジュールと呼ばれるパラメータをもう1つ渡す必要があります。
私のものスクリプト:
#!/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
リクエストした特定の質問に答えるには、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のようなよく知られたフォーマットとそれに合ったツールを使用することをお勧めします。