A. awk怎么实现一二列是空格分开,三四列是tab分开
我不太来明白你的问题,如果一二列自是空格分开,三四列是tab分开,那么你怎么知道列数是一二三四的?所以我觉得你最好把原始数据列出,同时说出你的要求,这样别人比较好帮你。
比如数据为
1 2 3:4
a b:c:d
象你说的一二列是空格分,三四列是:分,那么二三列之间是什么?这个很重要的。
B. 用awk如何读取shell命令行上的参数(参数可以是带空格的)
echo|awkcmd="$@""{printcmd}"
C. 如何用awk命令用一个或多个空格做分隔符
awk-F"*"
当 -F后面跟着一个以上字符时,这个字符串被当成正则表达式,所以" *"两个空格跟一个星号表示用一个或多个空格做分隔符
D. awk 为什么可以去掉前面的空格
awk默认是用 空格,tab作为字段分隔符的,不只是前面的空格被去掉,实际上所有的空格都被去掉了
E. awk里面怎么去除一个字符串的前后空格
^echo"babygo"|awk'{sub("^*","");sub("*$","");print}'
使用sub替换,结合正则中的限位符^和$即可。
^匹配内字符串开头位置,$匹配字符串结尾位置。容
结尾的空格有没有去掉,直接这样看不出。可以使用下面的方式测试:
F. linux shell awk 如何区分空格和tab
你先试试在命令行这么做:echo `cat list`
然后你仔细看看你脚本里面 `echo $line` 的结果
然后你试试自己总回结一下,为什么答会脚本会输出这样的结果
想不到再留言给我吧
cat会输出文件原本的样子。
G. awk中如何去除每个域的首尾空格,并且在条件中使用
第一种方式,在分割域的时候就把空格去掉,-F "[abc ]+"
第二种方式,获取出来后使用sed进行替换,awk -F" " '{print $1}'|sed 's/ //g'
H. awk 默认不读取空格
|试:
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}'`)
I. awk用空格做分隔符,且数据用空格占位。输出列是错位的怎么处理
题主你好,
对于题主问题中其实主要有两点要理解的:
前提: 假设x为分隔符(重点:x不是空格或tab)
1. 非处于开头位置的连续分隔符的处理; // 如1xx2
2. 处于开头位置的连续分隔符的处理; // 如 xx1x2
------------------
对于1xx2的处理:
因为xx都是分隔符,所以处理这种情况时就会在xx之间插入空格(下面以0来表示空格,看着更直观一些),即
1x0x2
***
对于xx1x2来说也是一样的,
0x0x1x2
上面空格的插入你仔细想一下就可以理解,因为x是分隔符,这样插入后你就可以直观的看出$1,$2...
==========
对于分隔符是空格或tab的处理还不一样(假设y为空格或tab):
1yyy3
1y2y3
yy2y3
1y2y3y4
1y2y3
此时开头空白会被去掉, 非开头的连续空白会被替换为1个空格:
1y3
1y2y3
2y3
1y2y3y4
1y2y3
此时对于$1,$2...都是谁一目了然
题主看明白我上面写的,再去理解一下问题,看看是否就明白了,不明白追问
写在最后: 对于上面的处理逻辑,我也是根据输出结果总结出来的, 没有相应的资料论证
就题主题目中这几行数据,如果想要得到相应的结果可以使用:
也就是说,题主给的那些数据,连续空格被预处理成了另一种形式, 如果题主非要输出图片中的期望结果,就要将数据构造为一般格式, 然后进行相应的输出.
希望可以帮到题主, 欢迎追问
J. 在linux中使用awk把文件定长转换成分隔符,全部是空格变成一个空格显示。
||echo "aaaa bbbb cccc ddd" | awk '
{num = NF;
for(i = 1;i <= num;i++)
{
printf "%s|",$i
}
}'
结果是专:属aaaa|bbbb|cccc|ddd|