从字符串开始:
String=1973251922:197325192278:abcdefgh:0xfff689990:Searching done for the string:SUCCESS.
在第4个冒号"之后匹配所有字符串所需的正则表达式:"并为shell脚本中的变量分配它,如:
var_result="Searching done for the string:SUCCESS."
答案 0 :(得分:4)
$ string="1973251922:197325192278:abcdefgh:0xfff689990:Searching done for the string:SUCCESS."
$ echo "${string#*:*:*:*:}"
Searching done for the string:SUCCESS.
${string#*:*:*:*:}
是前缀删除的示例。它删除了由四个以冒号分隔的字符串组成的前缀。
输出可以保存在shell变量中:
$ var_result=${string#*:*:*:*:}
$ echo "$var_result"
Searching done for the string:SUCCESS.
cut
适用于此:
$ string="1973251922:197325192278:abcdefgh:0xfff689990:Searching done for the string:SUCCESS."
$ cut -d: -f 5- <<<"$string"
Searching done for the string:SUCCESS.
以上选择第五个字段和所有后续字段,其中字段以冒号分隔。更具体地说,-d:
告诉cut
使用:
作为字段分隔符,-f 5-
告诉它选择字段5以及之后的所有内容。
要将输出保存在变量中,我们使用命令替换:
$ var_result=$(cut -d: -f 5- <<<"$var")
$ echo "$var_result"
Searching done for the string:SUCCESS.
如果你只有一个POSIX shell而不是bash,那么我们需要使用echo
:
$ var_result=$(echo "$var" | cut -d: -f 5-)
$ echo "$var_result"
Searching done for the string:SUCCESS.
或者,更安全,printf
:
$ var_result=$(printf "%s" "$var" | cut -d: -f 5-)
$ echo "$var_result"
Searching done for the string:SUCCESS.
以下使用sed删除冒号定义的前四个字段:
$ sed -E 's/([^:]*:){4}//' <<<"$string"
Searching done for the string:SUCCESS.
更具体地说:
[^:]
匹配除:
以外的任何字符。
[^:]*:
匹配任意数量的非冒号后跟冒号。
([^:]*:){4}
恰好匹配四个冒号分隔的字段。
s/([^:]*:){4}//
是一个替换命令,它会查找前四个以冒号分隔的列,并用空字符串替换它们。
以下内容相同,但会将结果保存在变量中:
$ var_result=$(sed -E 's/([^:]*:){4}//' <<<"$string")
$ echo "$var_result"
Searching done for the string:SUCCESS.
以下内容相同,但也适用于POSIX shell:
$ var_result=$(printf '%s' "$var" | sed -E 's/([^:]*:){4}//')
$ echo "$var_result"
Searching done for the string:SUCCESS.
答案 1 :(得分:0)
以下解决方案可能对您有所帮助。 让我们说以下是变量的值:
import serial
with serial.Serial('/dev/ttyS0',9600,8,serial.PARITY_NONE,serial.STOPBITS_ONE) as ser:
for i in range(10):
val = ser.read(2)
答案 2 :(得分:0)
使用bash正则表达式,您可以说:
String="1973251922:197325192278:abcdefgh:0xfff689990:Searching done for the string:SUCCESS."
if [[ $String =~ ^([^:]*:){4}(.+)$ ]]; then
echo ${BASH_REMATCH[2]}
fi