我有一个包含以下格式行的文本文件:
9999.0 @str:Attribute|ID=foo_1|SendingTime=2015-07-24 05:12:12.123|S-Id=9999|IDSource=Test_3|Qty=1555
据此,我想使用 shell 脚本从每一行中获取各个部分。比如说:
VAR1 = Attribute,
VAR2 = Date,
VAR3 = timeStamp,
VAR4 = Qty
主要问题是信息以不同的顺序出现,有些信息在每一行中有更多/更少不需要的数据。所以拆分成一个数组不会削减它。
最佳答案
grep
和 Perl
正则表达式的示例:
#!/bin/bash
s="9999.0 @str:Attribute|ID=foo_1|SendingTime=2015-07-24 05:12:12.123|S-Id=9999|IDSource=Test_3|Qty=1555"
var1="$(echo "$s" |grep -oP "(?<=@str:)[^|]*")" # @str:
var2="$(echo "$s" |grep -oP "(?<=SendingTime=)[^|]*")" # SendingTime=
var3="${var2#* }" # Date
var2="${var2% *}" # timestamp
var4="$(echo "$s" |grep -oP "(?<=Qty=)[^|]*")" # Qty
echo "$var1 | $var2 | $var3 | $var4"
输出:
Attribute | 2015-07-24 | 05:12:12.123 | 1555
关于linux - 使用shell脚本从字符串中提取信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31183540/