wdjh.net
当前位置:首页 >> Awk 按字符串分割 >>

Awk 按字符串分割

awk只能某一个分隔符切割字符串 ` echo "aa,bb,cc"|awk -F ',' '{print $1} '` 输出结果就是aa $1 就是第一项 $NF是最后一项 你这种分隔符不一致的没法用awk分割啊

假设有字符串: str="abcdefg"要截取c和f之间的字符串,得到de。 可以用split函数,以c和f为分隔符,将字符串分割,取分割后的第二个字段。 echo "$str" | awk '{split($0,a,"[cf]");print a[2]}' 另一种方法,也可以分别计算出c和f在字符串中的...

awk -F "字符串" 用-F参数后而跟一个字符串,这个字符串就被当成正则处理生成分隔符 如果没有特殊字符的话,原始字符串就被设置为字段分隔符

[root@localhost ~]# cat -A asd atqwe$as dfgh$d dfgh$fga dghsdf$dg shsgh$sdafsdga$[root@localhost ~]# echo `cat -A a`sd atqwe$ as dfgh$ d dfgh$ fga dghsdf$ dg shsgh$ sdafsdga$[root@localhost ~]# echo `cat -A a`|awk -F"$" '{print...

用cut最简便(参见 小米肥猫 的回答)。 另外,Bash中特有的字符串处理方法(掐头去尾法)也比较常用(参见下面的链接)。 对于这道题来说: var=“dfhjk_fewsk>dfakhi=vshbjy_df>brfdgr

当有多个分隔符的时候,不能在外面直接用 -F,而是要用BEGIN{FS="[:=;]"} echo "RLTDP:MSC=ALL;" | awk 'BEGIN{FS="[:=;]"}{print $1"|"$2"|"$3}'

# echo a:b:c|sed 's/:/\n/g' a b c # echo a:b:c|awk -F: '{for(i=1;i

awk -F "字符串" 用-F参数后而跟一个字符串,这个字符串就被当成正则处理生成分隔符 如果没有特殊字符的话,原始字符串就被设置为字段分隔符

awk -F "字符串" 用-F参数后而跟一个字符串,这个字符串就被当成正则处理生成分隔符 如果没有特殊字符的话,原始字符串就被设置为字段分隔符

主要因为 FS可以用正则表达式,而 “|”在正则中有特殊意义 所以需要写成: FS=" [\|] " 或在外面用 -F ' [\|] ' 也可以 如图:

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