shell bash-如何将字符串拆分为一个delimeter,并将每个子字符串回显到一个文件中

shell bash-如何将字符串拆分为一个delimeter,并将每个子字符串回显到一个文件中,bash,shell,ksh,Bash,Shell,Ksh,您好,我正在尝试拆分一个从文件中获取的字符串,在这里使用分隔符一行awk可能更简单,如果您在这里提供示例输入和预期输出,那么使用愤怒的脸regex separator=会有帮助。我给出的awk答案应该有效,阿尔夫的答案也应该有效,尽管你想要什么还不清楚。 while read line do # ceck if the line begins with client_values= if[["$line" == *client_values=*]] CLIENT_VA

您好,我正在尝试拆分一个从文件中获取的字符串,在这里使用分隔符一行awk可能更简单,如果您在这里提供示例输入和预期输出,那么使用愤怒的脸regex separator=会有帮助。我给出的awk答案应该有效,阿尔夫的答案也应该有效,尽管你想要什么还不清楚。
while read line
do
   # ceck if the line begins with client_values=
   if[["$line" == *client_values=*]]
        CLIENT_VALUES = 'echo "${line}" | cut -d'=' -f 2'

        #Now need to split the  CLIENT_VALUES using "<" as a delimeter.
        # for each substring
            echo "Output" >> ${FILE}
            echo "Value $substring" >> ${FILE}
            echo "End" >> ${FILE}

    done < ${PROP_FILE}
grep '^client_values=' < "${PROP_FILE}" | while IFS='=' read name value
  do
    IFS='<' read -ra parts <<< "$value"
    for part in "${parts[@]}"
    do
      echo "Output"
      echo "Value $part"
      echo "End"
    done >> "${FILE}"
  done
$ awk -F "[=<]" '/^client_values/ { print "Output"; for (i = 2; i <= NF; i++) print "Value " $i; print "End"}'  input.txt >> output.txt
$ cat input.txt
client_values=firstvalue1<secondvalue2<thirdvalue3
some text
client_values=someothervalue1<someothervalue2
$ cat output.txt
Output
Value firstvalue1
Value secondvalue2
Value thirdvalue3
End
Output
Value someothervalue1
Value someothervalue2
End
#!/bin/bash
PROP_FILE='input.txt'
FILE="output2.txt"
while read line
do
   # ceck if the line begins with client_values=
   if [[ "$line" == "client_values="* ]]
   then
        CLIENT_VALUES=`echo "${line}" | cut -d'=' -f 2`
        IFS='<' read -ra CLIENT_VALUES <<< "$CLIENT_VALUES"
        for substring in "${CLIENT_VALUES[@]}"; do
          echo "Output" >> "${FILE}"
          echo "Value $substring" >> "${FILE}"
          echo "End" >> "${FILE}"
        done
  fi

done < "${PROP_FILE}"
$ cat output2.txt
Output
Value firstvalue1
End
Output
Value secondvalue2
End
Output
Value thirdvalue3
End
Output
Value someothervalue1
End
Output
Value someothervalue2
End