bycj.net
当前位置:首页 >> shEll中分割字符串之后怎么取得最后一个东西的值?... >>

shEll中分割字符串之后怎么取得最后一个东西的值?...

这个问题很简单呀,直接使用命令basename获取即可.例如path="/home/work/hdfs/diff"获取diff的命令为:basename $path 如果想获取/home/work/hdfs这部分内容,可使用命令:basedir $path

awk 'NF-=1' FS="/" OFS="/" 即可 希望采纳~ 这么简单的命令就能完成,楼上还能写出一堆废话.

eval echo '$'"$#"

a=sdfdsagfgretegfdg20140323b=${a##*[a-zA-Z]} ##删除最后一个出现字母的左边所有字符串,保留最后的数字echo $bc=sdfksdjlfk234sdfsd23432sdfsdf04d=${c##*[a-zA-Z]} ##删除最后一个出现字母的左边所有字符串,保留最后的数字echo $d

1、截取字符串用subString方法2、如果要截取一个字符串首先要判断字符串的长度是否符合你的要求不然会报错.String str="awdawdswe";//待处理字符串 if(str.length>=4){// 判断是否长度大于等于4 String strsub=str.sbuString(str.length- 4);//一个参数表示截取传递的序号之后的部分 String strsub1=str.sbuString(str.length- 4,str.length);//截取两个数字之间的部分 }

awk -F" " '{print $4}' xxx | awk -F. '{print $1}'awk -F" " '{print $4}' xxx | sed 's/\.//g'

#!/usr/bin/kshcal_id=1num_count=10max_num=-99999min_num=-99999while [ $cal_id -le $num_count ]doread lineif [ $cal_id -eq 1 ] ; thenmin_num=$linefiif [ $line -ge $max_num ] ; thenmax_num=$linefiif [ $line -le $min_num ] ; thenmin_num=$linefical_id=`expr $cal_id + 1`doneclearecho $max_numecho $min_num基本上没有问题了

用cut最简便(参见 小米肥猫 的回答).另外,Bash中特有的字符串处理方法(掐头去尾法)也比较常用(参见下面的链接).对于这道题来说:var=“dfhjk_fewsk>dfakhi=vshbjy_df>brfdgr<rewrt" tmp=${var#*>} #掐头,最小匹配(去除从前往后第一个>及前面的所有字符) echo ${tmp%%>*} #去尾,最大匹配(去除从后往前最后一个>及后面的所有字符) 助记口诀:# 表示掐头, 因为键盘上 # 在 $ 的左面.% 表示去尾, 因为键盘上 % 在 $ 的右面.单个#或%的表示最小匹配,双个#或%表示最大匹配(即,当有多种匹配方案的时候,选择匹配的最大长度还是最小长度).

指针从后往前搜索,碰到第一个'\'字符时停止,指针所指的位置就是字符串的最后一个'\'字符.

实验:echo "TAG_BXXX_DBG = 0TAG_CXXXXXX_DBG = 1TAG_DXXXXXXX_DBG = 0 "|grep TAG_CXXXXXX_DBG|cut -d '=' -f 2你的要求:cat cfg.txt |grep TAG_CXXXXXX_DBG|cut -d '=' -f 2

网站首页 | 网站地图
All rights reserved Powered by www.bycj.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com