分页: 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"