shell bash-如何将字符串拆分为一个delimeter,并将每个子字符串回显到一个文件中
您好,我正在尝试拆分一个从文件中获取的字符串,在这里使用分隔符一行awk可能更简单,如果您在这里提供示例输入和预期输出,那么使用愤怒的脸regex separator=会有帮助。我给出的awk答案应该有效,阿尔夫的答案也应该有效,尽管你想要什么还不清楚。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
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