shell 截取字符串
shell 截取字符串(cut, sed, awk)
cut
-b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。 -c :以字符为单位进行分割。 -d:自定义分隔符,默认为制表符。 -f:与-d一起使用,指定显示哪个区域。 -n:取消分割多字节字符。仅和-b标志一起使用。如果字符的最后一个字节落在由-b标志的List参数指示的范围之内,该字符将被写出;否则,该字符将被排除。 -b .eg1:然后调用cut,即剪切字符串中的第2和第5个字节。 echo"123abc"|cut -b 2,5 ----------------------- 输出为2b eg2:cut掉11-14位置的字符 echo "123456789abcdefghjklmnopq" | cut -b 11-14 ----------------------------------------------- 输出为bcde -c 用法示例输出/etc/passwd文件每一行的前4个字符$ sudo cut -c 1-4 /etc/passwd -d cut命令用于列提取,默认分隔符是tab键。 选项:-d指定分隔符,-f指定提取第几列 eg1: 以%作为分隔符 输出第一个%前的区域1的东西,输出区域2的东西 root@ROUTER:~# echo "CPU: busy 14% (system=10% user=3% nice=0% idle=85%)" | cut -d \% -f 1 CPU: busy 14 root@ROUTER:~# echo "CPU: busy 14% (system=10% user=3% nice=0% idle=85%)" | cut -d \% -f 2 (system=10 root@ROUTER:~# echo "CPU: busy 14% (system=10% user=3% nice=0% idle=85%)" | cut -b 11-14 | cut -d \% -f 1 14 root@ROUTER:~# echo "CPU: busy 14% (system=10% user=3% nice=0% idle=85%)" | cut -b 11-14 14%
sed
eg1:去除文本中的所有数字 sed 's/[0-9]//g' [0-9]匹配一个数字, s/A/B/ 将A替换为B g表示全局替换为空格 eg2:取当前的接口的ip,把所有的:替换为空格,然后打印出空格为分割的第几个数 root@Evelyn:~# ifconfig ens33 | grep Bcast | sed 's/:/ /g' | awk '{print $3}' 192.168.23.44 eg3:取出延时时间的数字 ping 192.168.120.1 -s 1000 -c 5 | grep time | sed 's/=/ /g' | awk '{print $10}'
awk
语法格式:awk '条件1{动作1}条件2{动作2}...' 文件
条件,一般使用关系表达式作为条件,如a>10。动作,格式化输出或流程控制语句
awk一次读入一整行,默认以tab键或者空格为分隔符将一行分为多个字段,表示为
start_line=`grep -in 'set task group' $ROOTPATH/../../core/helloworld.c |awk 'BEGIN {FS=":"} {print $1}'`
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY