Linux取字符串
发布时间: 2025-04-24 04:25:27
1. linux有什么命令可以提取指定的字符串
1. 例子
提取字符串以下字符串 error: 与 : 之间的子字符串。并消除空格。
"src/network/misc/nv_net_udp.c:17:fatalerror:nv_net_tools.h:Nosuchfileordirectory"1
2. 命令
echo"src/network/misc/nv_net_udp.c:17:fatalerror:nv_net_tools.h:Nosuchfileordirectory"|sed-r's/.*error:(.*):.*/1/'|seds/[[:space:]]//g1
该命令涉及 sed 命令的’反向引用’章节, 1 代表 (.*)
3. 结果
nv_net_tools.h1
4. 拓展 : 解决编译错误
leon$makeclean&&makeallarm-hisiv100nptl-linux-gcc-c-fPIC-Wall-g-ggdb-O0-DHI3518_CHIP-DLINUX-I./src/include-I./src/include/common-I./src/include/camera-I./src/include/conf-I./src/include/log-I./src/include/network-I./src/include/upnp-I/home/leon/nvc/arm-hisiv100nptl-linux/includesrc/common/nv_conf.c-obuild/objs/hi3518/src/common/nv_conf.o/*省略中间部分*/arm-hisiv100nptl-linux-gcc-c-fPIC-Wall-g-ggdb-O0-DHI3518_CHIP-DLINUX-I./src/include-I./src/include/common-I./src/include/camera-I./src/include/conf-I./src/include/log-I./src/include/network-I./src/include/upnp-I/home/leon/nvc/arm-hisiv100nptl-linux/includesrc/network/misc/nv_net_udp.c-obuild/objs/hi3518/src/network/misc/nv_net_udp.o
src/network/misc/nv_net_udp.c:17:fatalerror:nv_net_tools.h:Nosuchfileordirectory
compilationterminated.make:***[build/objs/hi3518/src/network/misc/nv_net_udp.o]Error112345678
note: 在以上编译过程中我们发现,编译器提示说找不到nv_net_tools.h文件,而现实中我们也不需要这个文件的包含了,需要删除包含nv_net_tools.h 文件中的该行代码。
5.字符串提取 (命令行)
目标字符串
"from":"0802070975","to":"0802071013","url":"http://cn.update.mynetvue.com:8060/firmware/.tar.gz","md5":"","level":012
需要提取 from , to, url , md5, level 等5个关键字后面的内容。
//提取 from 内容echo
"from":"0802070975","to":"0802071013","url":"http://cn.update.mynetvue.com:8060/firmware/.tar.gz","md5":"","level":0|sed"s/.*from:(.*)/1/"|cut-d','-f1
//提取 to 内容echo
"from":"0802070975","to":"0802071013","url":"http://cn.update.mynetvue.com:8060/firmware/.tar.gz","md5":"","level":0|sed"s/.*to:(.*)/1/"|cut-d','-f1
//提取 url 内容echo
"from":"0802070975","to":"0802071013","url":"http://cn.update.mynetvue.com:8060/firmware/.tar.gz","md5":"","level":0|sed"s/.*url:(.*)/1/"|cut-d','-f1
//提取 md5 内容echo
"from":"0802070975","to":"0802071013","url":"http://cn.update.mynetvue.com:8060/firmware/.tar.gz","md5":"","level":0|sed"s/.*md5:(.*)/1/"|cut-d','-f1
//提取 level 内容echo
"from":"0802070975","to":"0802071013","url":"http://cn.update.mynetvue.com:8060/firmware/.tar.gz","md5":"","level":0|sed"s/.*level:(.*)/1/"|cut-d','-f112345678910111213141516
6.字符串提取 (脚本文件)
ret_val=""from":"0804020982","to":"0804020998","url":"http://cn.update.mynetvue.com:8060/firmware/.tar.gz","md5":"","level":0"
echoret_valis:[$ret_val]from="$(echo$ret_val|sed's/.*from":(.*)/1/'|cut-d','-f1|sed's/"//g')"
echofrom:$from
to="$(echo$ret_val|sed's/.*to":(.*)/1/'|cut-d','-f1|sed's/"//g')"
echoto:$to
url="$(echo$ret_val|sed's/.*url":(.*)/1/'|cut-d','-f1|sed's/"//g')"
echourl:$url
md5="$(echo$ret_val|sed's/.*md5":(.*)/1/'|cut-d','-f1|sed's/"//g')"
echomd5:$md5
level="$(echo$ret_val|sed's/.*level":(.*)/1/'|cut-d','-f1|sed's/"//g')"
echolevel:$
执行结果:
ret_valis:["from":"0804020982","to":"0804020998","url":"http://cn.update.mynetvue.com:8060/firmware/.tar.gz","md5":"","level":0]
from:0804020982
to:0804020998
url:http://cn.update.mynetvue.com:8060/firmware/.tar.gzmd5:
level:0
I.总结
要注意命令行执行,与脚本文件执行之间的差异性。
2. linux 中如何截取2个字符串中间的字符
可以用awk、sed、tr、perl都能实现
set s = '"stratum":{"accepted_shares":1,"algorithm"'
set a = `echo $s | awk -F '["/:]' '{print $4}'`
热点内容