www.4585.net > Awk 去除首尾空格

Awk 去除首尾空格

第一种方式,在分割域的时候就把空格去掉,-F "[abc ]+" 第二种方式,获取出来后使用sed进行替换,awk -F" " '{print $1}'|sed 's/ //g'

echo " baby go " | awk '{sub("^ *","");sub(" *$","");print}'使用sub替换,结合正则中的限位符^和$即可。 ^匹配字符串开头位置,$匹配字符串结尾位置。 结尾的空格有没有去掉,直接这样看不出。可以使用下面的方式测试:

awk默认是用 空格,tab作为字段分隔符的,不只是前面的空格被去掉,实际上所有的空格都被去掉了

echo "aa bb cc dd" | awk '{print $NF}'NF (Number of Fields),字段数目,这是awk内置变量。因此$NF即为最后一个字段的值。 awk默认的字段分隔符为空白符(包括空格和TAB)。

1 echo " baby go " | awk '{sub("^ *","");sub(" *$","");print}' 使用sub替换,结合正则中的限位符^和$即可。 ^匹配字符串开头位置,$匹配字符串结尾位置。 结尾的空格有没有去掉,直接这样看不出。可以使用下面的方式测试:

# echo " baby "|awk '{sub(" baby ","baby");print}' baby 通过sub()进行替换

试: a=(`sed -n '1,235'p idc11.txt|awk -F "[ |]" '{print $1$2}'`) b=(`sed -n '1,235'p idc11.txt|awk -F "[ |]" '{print $3}'`)

我不太明白你的问题,如果一二列是空格分开,三四列是tab分开,那么你怎么知道列数是一二三四的?所以我觉得你最好把原始数据列出,同时说出你的要求,这样别人比较好帮你。 比如数据为 1 2 3:4 a b:c:d 象你说的一二列是空格分,三四列是:...

删除第一列: 方法1: awk '{$1=;print $0}' file >file2 方法2: sed -e 's/[^ ]* //' file >file2 删除空格: sed -i 's/ //g' file

awk -F" *"当 -F后面跟着一个以上字符时,这个字符串被当成正则表达式,所以" *"两个空格跟一个星号表示用一个或多个空格做分隔符

网站地图

All rights reserved Powered by www.4585.net

copyright ©right 2010-2021。
www.4585.net内容来自网络,如有侵犯请联系客服。zhit325@qq.com