Final.txtは次のとおりです。
build/create_changes.sh
build/create_changes.sh-meta.xml
src/aura/camping/camping.design
src/aura/camping/camping.design-meta.xml
コードは次のとおりです。
if [ -e final.txt ]
then
ARRAY=()
while read CFILE
do
echo Analyzing file `basename $CFILE`
case "$CFILE"
in
*.design) TYPENAME="AuraDefinitionBundle";;
*) TYPENAME="UNKNOWN";;
esac
if [ "$TYPENAME" == "AuraDefinitionBundle" ]
then
if [ $(contains "${ARRAY[@]}" $(basename -- "$(dirname -- "$CFILE")")) != "y" ]
then
echo baseFile from new method cFile $CFILE
CFILENAME="$CFILE"
replace="src/aura/"$(basename -- "$(dirname -- "$CFILE")")
echo checkChanges "${CFILENAME/$CFILENAME/"$replace"}"
CFILE="${CFILENAME/$CFILENAME/"$replace"}"
echo baseFile from after change method cFile $CFILE
else
continue
fi
fi
done < final.txt
else
echo Change file not found!
エコウィンドウで次のことがわかります。
[exec] baseFile from new method cFile src/aura/camping/camping.design
[exec] checkChanges src/aura/camping
[exec] baseFile from after change method cFile src/aura/camping
ただし、ファイルは変更されませんでした。sed
コマンドを追加しましたが、出力は変更されませんでした。
if [ $(contains "${ARRAY[@]}" $(basename -- "$(dirname -- "$CFILE")")) != "y" ]
then
CFILENAME="$CFILE"
ARRAY+=($(basename -- "$(dirname -- "$CFILE")"))
replace="src/aura/"$(basename -- "$(dirname -- "$CFILE")")
#CFILE="${CFILENAME/$CFILENAME/"$replace"}"
sed -i 's/$CFILENAME/$replace/' final.txt
else
continue
fi
予想入力
build/create_changes.sh
build/create_changes.sh-meta.xml
src/aura/camping/camping.design
src/aura/camping/camping.design-meta.xml
期待される出力
build/create_changes.sh
build/create_changes.sh-meta.xml
src/aura/camping
src/aura/camping/camping.design-meta.xml
答え1
私はあなたの論理に従うことができるかどうかはわかりませんが、これは
awk '/\.design$/ {sub("/[^/]*$", "")} 1 ' file
build/create_changes.sh
build/create_changes.sh-meta.xml
src/aura/camping
src/aura/camping/camping.design-meta.xml
希望の出力を生成します...
答え2
basename で終わるすべてのパス名を削除するには、次のようにします.design
。
sed 's#/[^/]*\.design$##' final.txt
内部編集を実行するには、sed -i
上記の式を使用します(フラグは少し異なります-i
が、これはGNUsed
などに適用されます)。
正規表現は、行末の文字ではなく文字とリテラル文字列が続く文字列/[^/]*\.design$
と一致します。/
/
.design