linux字符截取命令 linux命令截取字符串

有趣的 Linux 命令(一)—— cut 命令

cut 命令在 man 文档中的含义是 删除文件中每一行的指定部分 。其大意就跟 cut 单词本身的含义一样,是用来剪切数据的。

创新互联公司专注为客户提供全方位的互联网综合服务,包含不限于网站建设、网站制作、龙安网络推广、成都微信小程序、龙安网络营销、龙安企业策划、龙安品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联公司为所有大学生创业者提供龙安建站搭建服务,24小时服务热线:13518219792,官方网址:www.cdcxhl.com

输出第二个字符

以逗号为分割符,截取第二部分

cut命令可以将一串字符作为列来显示,字符字段的记法:

例如:打印从第 8 个字符开始到结尾

linux中的字符截取

参考链接:

从 截去 的角度上说,总结为: 左#右%

从 截取 的角度上说,反过来。

其中,string 表示要截取的字符,chars 是指定的字符(或者子字符串), * 是通配符的一种,表示任意长度的字符串。

*chars 连起来使用的意思是:忽略左边的所有字符,直到遇见 chars(chars 不会被截取)。

如果希望直到最后一个指定字符(子字符串)再匹配结束,那么可以使用##,具体格式为:

2.使用 % 截取左边字符

使用%号可以截取指定字符(或者子字符串)左边的所有字符,具体格式如下:

请注意 * 的位置,因为要截取 chars 左边的字符,而忽略 chars 右边的字符,所以*应该位于 chars 的右侧。其他方面%和#的用法相同,这里不再赘述,仅举例说明:

linux字符串提取数字

# cat /proc/meminfo |grep -w "MemTotal"

MemTotal:      32781228 kB

使用tr命令截取字符串

# cat /proc/meminfo |grep -w "MemTotal" | tr -cd "[0-9]"

32781228

linux有什么命令可以提取指定的字符串

1. 例子

提取字符串以下字符串 error: 与 : 之间的子字符串。并消除空格。

"src/network/misc/nv_net_udp.c:17: fatal error: nv_net_tools.h: No such file or directory"1

2. 命令

echo "src/network/misc/nv_net_udp.c:17: fatal error: nv_net_tools.h: No such file or directory" | sed -r 's/.*error\:(.*)\:.*/\1/' | sed s/[[:space:]]//g1

该命令涉及 sed 命令的’反向引用’章节, \1 代表 (.*)

3. 结果

nv_net_tools.h1

4. 拓展 : 解决编译错误

leon$  make clean  make all 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/include src/common/nv_conf.c -o build/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/include src/network/misc/nv_net_udp.c -o build/objs/hi3518/src/network/misc/nv_net_udp.o

src/network/misc/nv_net_udp.c:17: fatal error: nv_net_tools.h: No such file or directory

compilation terminated.make: *** [build/objs/hi3518/src/network/misc/nv_net_udp.o] Error 112345678

note: 在以上编译过程中我们发现,编译器提示说找不到nv_net_tools.h文件,而现实中我们也不需要这个文件的包含了,需要删除包含nv_net_tools.h 文件中的该行代码。

5.字符串提取 (命令行)

目标字符串

"from":"0802070975","to":"0802071013","url":"","md5":"ace4b34383f964442a591559d0afb296","level":0 12

需要提取 from , to, url , md5, level 等5个关键字后面的内容。

//提取 from  内容echo

"from":"0802070975","to":"0802071013","url":"","md5":"ace4b34383f964442a591559d0afb296","level":0 |  sed "s/.*from:\(.*\)/\1/" |  cut -d ',' -f1

//提取 to 内容echo

"from":"0802070975","to":"0802071013","url":"","md5":"ace4b34383f964442a591559d0afb296","level":0 |  sed "s/.*to:\(.*\)/\1/" |  cut -d ',' -f1

//提取 url  内容echo

"from":"0802070975","to":"0802071013","url":"","md5":"ace4b34383f964442a591559d0afb296","level":0 |  sed "s/.*url:\(.*\)/\1/" |  cut -d ',' -f1

//提取 md5 内容echo

"from":"0802070975","to":"0802071013","url":"","md5":"ace4b34383f964442a591559d0afb296","level":0 |  sed "s/.*md5:\(.*\)/\1/" |  cut -d ',' -f1

//提取 level 内容echo

"from":"0802070975","to":"0802071013","url":"","md5":"ace4b34383f964442a591559d0afb296","level":0 |  sed "s/.*level:\(.*\)/\1/" |  cut -d ',' -f112345678910111213141516

6.字符串提取 (脚本文件)

ret_val="\"from\":\"0804020982\",\"to\":\"0804020998\",\"url\":\"\",\"md5\":\"408d261924e6c271200fdf14d3a230cc\",\"level\":0"

echo ret_val is : [ $ret_val ]from="$(echo $ret_val | sed 's/.*from\"\:\(.*\)/\1/' |  cut -d ',' -f1 |  sed 's/"//g')"

echo from: $from

to="$(echo $ret_val | sed 's/.*to\"\:\(.*\)/\1/' |  cut -d ',' -f1 |  sed 's/"//g')"

echo to: $to

url="$(echo $ret_val | sed 's/.*url\"\:\(.*\)/\1/' |  cut -d ',' -f1 |  sed 's/"//g')"

echo url: $url

md5="$(echo $ret_val | sed 's/.*md5\"\:\(.*\)/\1/' |  cut -d ',' -f1 | sed 's/"//g')"

echo md5: $md5

level="$(echo $ret_val | sed 's/.*level\"\:\(.*\)/\1/' |  cut -d ',' -f1 | sed 's/"//g')"

echo level: $level12345678910111213141516171819

执行结果:

ret_val is : [ "from":"0804020982","to":"0804020998","url":"","md5":"408d261924e6c271200fdf14d3a230cc","level":0 ]

from: 0804020982

to: 0804020998

url: : 408d261924e6c271200fdf14d3a230cc

level: 0

I.总结

要注意命令行执行,与脚本文件执行之间的差异性。


新闻名称:linux字符截取命令 linux命令截取字符串
网站路径:http://azwzsj.com/article/doseccd.html