分页: 1 / 1
linux中的awk用法请教
发表于 : 2013-04-15 23:22
由 NewUserFF
原字符串如下:(v的前面有空格)
abcdefghijklmnopqrstu vwxyz
用awk处理:
echo "abcdefghijklmnopqrstu vwxyz"|awk -F '\s' '{print $1}'
原来想要把空格当成分割符,打印出第一部分abcdefghijklmnopqrstu(因为\s代表空白符),但是awk似乎把\s当成s了,也就是说,把分割符当成了s,打印出了abcdefghijklmnopqr,为什么?哪位高手可以说一下,十分感谢!
Re: linux中的awk用法请教
发表于 : 2013-04-15 23:26
由 枫叶饭团
空格是默认的啊,何必呢。。。而且谁说\s就是空白符的,不是所有程序都认的
Re: linux中的awk用法请教
发表于 : 2013-04-15 23:37
由 susbarbatus
~> echo "abcdefghijklmnopqrstu vwxyz" | awk -F'\s' '{print $1}'
awk: warning: escape sequence `\s' treated as plain `s'
abcdefghijklmnopqr
~> echo "abcdefghijklmnopqrstu vwxyz" | awk -F'\\s' '{print $1}'
abcdefghijklmnopqrstu
awk 自己给 warning 了都……
Re: linux中的awk用法请教
发表于 : 2013-04-15 23:39
由 susbarbatus
而且即使想显示指明用空格,这样就好了吧……
代码: 全选
echo "abcdefghijklmnopqrstu vwxyz" | awk -F' ' '{print $1}'
Re: linux中的awk用法请教
发表于 : 2013-04-16 9:16
由 NewUserFF
susbarbatus 写了:而且即使想显示指明用空格,这样就好了吧……
代码: 全选
echo "abcdefghijklmnopqrstu vwxyz" | awk -F' ' '{print $1}'
我的最初想法不是这样的,我想在分隔符上用正则
Re: linux中的awk用法请教
发表于 : 2013-04-16 9:29
由 yjcong
NewUserFF 写了:susbarbatus 写了:而且即使想显示指明用空格,这样就好了吧……
代码: 全选
echo "abcdefghijklmnopqrstu vwxyz" | awk -F' ' '{print $1}'
我的最初想法不是这样的,我想在分隔符上用正则
echo "abcdefghijklmnopqrstu vwxyz" | awk -F'[[:blank:]]' '{print $1}'
Re: linux中的awk用法请教
发表于 : 2013-04-18 15:23
由 Methuselar
正则可以啊
代码: 全选
awk -F'\x20| |[[:blank:]]' '{print $1}' <<< "abcdefghijklmnopqrstu vwxyz"