이러한 파일을 어떻게 구문 분석하고 변수를 정의할 수 있나요? [폐쇄]

이러한 파일을 어떻게 구문 분석하고 변수를 정의할 수 있나요? [폐쇄]

예시 파일:

/Variable1=Value1/Variable2=Value Value Value/Variable3=Value3 Value3/ 

변수를 읽고 설정하고 싶습니다. 이는 내가 입력 echo $Variable1하고 Value1출력 등을 얻을 수 있음을 의미합니다 . 많은 것을 시도했지만 너무 길고 변수 이름이 변경되면 작동하지 않습니다. 효과적인 방법을 아는 사람이 있나요?

답변1

bash출발점 은 다음과 같습니다 .

OIFS="$IFS"
IFS=/; set -f
for piece in $(cat file)
do
  var=$(echo "$piece" | cut -d= -f1)
  val=$(echo "$piece" | cut -d= -f2-)
  [ -n "$var" ] && eval $var=\"$val\"
done
IFS="$OIFS"
unset piece var val

빈 변수 이름은 건너뛰지만 변수 이름 자체에 대한 온전성 검사는 수행되지 않습니다.

두 번째 방법은 다음과 같은 방법을 찾기로 결심했기 때문입니다 read.

declare -a vars
IFS=/ read -a vars < file
for piece in ${vars[*]}
do 
  mangle=$(echo "$piece" | sed 's/=\(.*\)/="\1"/')
  eval $mangle
done
unset vars piece mangle

맹글 라인은 단순히 등호 뒤의 값을 참조하는 데 사용됩니다.

답변2

. <(
    awk '
      BEGIN{RS="/";FS="="}
      NF==2{printf "%s=\"%s\"\n", $1, $2}
    ' file
)

awk이는 다음 텍스트를 만드는 데 사용됩니다 .

Variable1="Value1"
Variable2="Value Value Value"
Variable3="Value3 Value3"

이는 출처이므로 Variable{1,2,3}에서 찾을 수 있습니다 sh.

몇 가지 사항: 값에 ant 또는 가 포함되지 않은 것으로 /가정 =됩니다 ".

답변3

$ printf "%s\n" "$Variable1" "$Variable2" "$Variable3"



$ cat file
/Variable1=Value1/Variable2=Value Value Value/Variable3=Value3 Value3/ 
$ source <(tr / "\n" < file | sed -r 's/=(.*)/="\1"/')
$ printf "%s\n" "$Variable1" "$Variable2" "$Variable3"
Value1
Value Value Value
Value3 Value3

답변4

Bash의 경우: (문자열이 "liste.txt"라는 파일에 있는 경우)

IFS="/"
for val in $(cat liste.txt); do echo "$val" | sed -r "s/=(.*)$/=\"\1\"/g" | eval; done

그 후에는 다음을 시도해 보세요.

echo "$Varaible1"
echo "$Variable2"

등.

관련 정보