
正文
Linux命令取出字符 linux 获取字符串长度
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
Linux:用shell如何实现读取一个字符串的第n个字符呢
代码如下:
str="/home/gateman"
if [ ${str:0:1} = "/" ]; then
echo "yes'
fi
${str:0:1} 中0表示从第几个字符开始,1表示截取多长。
Shell是一种脚本语言,那么,就必须有解释器来执行这些脚本,常见的脚本解释器有:
bash:是Linux标准默认的shell。bash由Brian Fox和Chet Ramey共同完成,是BourneAgain Shell的缩写,内部命令一共有40个。
sh: 由Steve Bourne开发,是Bourne Shell的缩写,sh 是Unix 标准默认的shell。
另外还有:ash、 csh、 ksh等。
扩展资料
Linux shell 截取字符变量的前8位:
实现方法有如下几种:
expr substr “$a” 1 8
echo $a|awk ‘{print substr(,1,8)}’
echo $a|cut -c1-8
echo $
expr $a : ‘\(.\\).*’
echo $a|dd bs=1 count=8 2/dev/null
按照指定要求分割:
比如获取后缀名
ls -al | cut -d “.” -f2
小结:shell对应字符串的处理方法很多,根据需求灵活选择。
在做shell批处理程序时候,经常会涉及到字符串相关操作。有很多命令语句,如:awk,sed都可以做字符串各种操作。 其实shell内置一系列操作符号,可以达到类似效果,大家知道,使用内部操作符会省略启动外部程序等时间,因此速度会非常的快。
相关问答
Q1: linux grep命令,怎么取两个字符串之间的内容?比如,abcdefg我要找ab到fg之
这个需求不能用grep来实现,本质上是字符串的切割查找提取子串,可用awk来实现,例
如
echo abcdefghelloword | awk -v head="ab" -v tail="fg" '{print substr($0, index($0,head)+length(head),index($0,tail)-index($0,head)-length(head))}'
以上关键是计算出开头标记"ab",和结束标记"fg" 在字符串中的位置
执行结果就是
cde
Q2: shell(linux)提取指定字符怎么提取?比如下面截图是文件里的一部分,我想提取出8088
假设配置在config.ini
方法为:
cat config.ini | perl -0777 -pe 's/\n//g' | sed 's#/#/\n#g' | grep tomcatThreadPool | sed 's/.*port="\([^"]*\)".*/\1/'
Q3: 在linux中查找字符串用什么命令
Linux查找字符串用grep命令Linux命令取出字符,可以查找文件Linux命令取出字符,也可以在命令的结果中查找。如果是在文件中查找字符串Linux命令取出字符,用法是Linux命令取出字符:
grep
用英文单引号括起来的字符串
文件名
如果是在命令的显示结果中查找Linux命令取出字符,需要用管道符将命令与grep连接起来,像这样:
last
|
grep
'root'
(在last命令的显示结果中查找字符串root)
Q4: Linux shell 中如何从路径名提取指定字符串
以 - 为分隔符,用cut命令取第二个字段就行了啊(只要路径名里不含 - 即可)
echo "/home/lxy/hhhhh-a.bbb.cc.d" | cut -d'-' -f2
更保险一点的做法是先取出文件名(防止路径名里含 - ),然后再用上述方法处理:
echo "/home/lxy/hhhhh-a.bbb.cc.d" | awk -F/ '{print $NF}' | cut -d'-' -f2
Q5: 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 获取字符串长度、Linux命令取出字符的信息别忘了在本站进行查找喔。







