使用 bash 获取部分字符串 [重复]
Posted
技术标签:
【中文标题】使用 bash 获取部分字符串 [重复]【英文标题】:Take part of the string using bash [duplicate] 【发布时间】:2014-12-20 01:15:09 【问题描述】:我有来自日志文件的关于发送代码的字符串,例如:
<timestamp> INFO [Response--22] Code [00000000] Code was sent to [+0000002345]
您能帮我使用 BASH 解析它以将代码值 (8chars) 放入变量中吗? 感谢您的帮助。
【问题讨论】:
你能提供预期的输出吗? 您是否已经尝试过?请详细说明您的目标! 预期输出为:从字符串“您可以使用 sed 提取值:
sed 's/.*Code *\[\([0-9]*\)].*/\1/' <<<"<timestamp> INFO [Response--22] Code [00000000] Code was sent to [+0000002345]"
00000000
如果该行在文件中,您可以使用sed '...' filename
。要将输出存储到变量中,您可以使用x=$(sed '...' filename)
。
【讨论】:
【参考方案2】:sed -r 's/(.*)(Code )\[([0-9]+)\](.*)/code = \3/'
输出:
sdlcb@ubuntu:~/AMD_C$ echo "<timestamp> INFO [Response--22] Code [00000000] Code was sent to [+0000002345]" | sed -r 's/(.*)(Code )\[([0-9]+)\](.*)/code = \3/'
code = 00000000
【讨论】:
【参考方案3】:如果我正确理解了您的要求:
$ x="<timestamp> INFO [Response--22] Code [00000000] Code was sent to [+0000002345]"
$ echo "$x" | sed -r 's/.*(Code )\[([0-9]+)\].*/\1= \2/'
Code = 00000000
【讨论】:
你应该在回显时引用"$x"
。
非常感谢。抱歉转储询问方式。
@TomFenech:感谢汤姆指出。更新【参考方案4】:
x='<timestamp> INFO [Response--22] Code [00000000] Code was sent to [+0000002345]'
read -a fields <<<"$x"
code=$fields[4]//[][]/
echo "code=$code"
【讨论】:
以上是关于使用 bash 获取部分字符串 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
通过回声管道将python变量(字符串)传递给bash命令[重复]