原字符串如下:(v的前面有空格)
abcdefghijklmnopqrstu vwxyz
用awk处理:
echo "abcdefghijklmnopqrstu vwxyz"|awk -F '\s' '{print $1}'
原来想要把空格当成分割符,打印出第一部分abcdefghijklmnopqrstu(因为\s代表空白符),但是awk似乎把\s当成s了,也就是说,把分割符当成了s,打印出了abcdefghijklmnopqr,为什么?哪位高手可以说一下,十分感谢!
linux中的awk用法请教
- NewUserFF
- 帖子: 413
- 注册时间: 2010-11-19 22:55
- 枫叶饭团
- 帖子: 14683
- 注册时间: 2010-06-16 1:05
- 系统: Mac OS X
- 来自: Tencent
- 联系:
Re: linux中的awk用法请教
空格是默认的啊,何必呢。。。而且谁说\s就是空白符的,不是所有程序都认的
- susbarbatus
- 帖子: 2966
- 注册时间: 2010-04-10 16:14
- 系统: Arch Linux
Re: linux中的awk用法请教
~> 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 了都……
awk: warning: escape sequence `\s' treated as plain `s'
abcdefghijklmnopqr
~> echo "abcdefghijklmnopqrstu vwxyz" | awk -F'\\s' '{print $1}'
abcdefghijklmnopqrstu
awk 自己给 warning 了都……
沉迷将棋中……
- susbarbatus
- 帖子: 2966
- 注册时间: 2010-04-10 16:14
- 系统: Arch Linux
Re: linux中的awk用法请教
而且即使想显示指明用空格,这样就好了吧……
代码: 全选
echo "abcdefghijklmnopqrstu vwxyz" | awk -F' ' '{print $1}'
沉迷将棋中……
- NewUserFF
- 帖子: 413
- 注册时间: 2010-11-19 22:55
Re: linux中的awk用法请教
我的最初想法不是这样的,我想在分隔符上用正则susbarbatus 写了:而且即使想显示指明用空格,这样就好了吧……代码: 全选
echo "abcdefghijklmnopqrstu vwxyz" | awk -F' ' '{print $1}'
- yjcong
- 帖子: 2470
- 注册时间: 2006-02-28 3:11
Re: linux中的awk用法请教
echo "abcdefghijklmnopqrstu vwxyz" | awk -F'[[:blank:]]' '{print $1}'NewUserFF 写了:我的最初想法不是这样的,我想在分隔符上用正则susbarbatus 写了:而且即使想显示指明用空格,这样就好了吧……代码: 全选
echo "abcdefghijklmnopqrstu vwxyz" | awk -F' ' '{print $1}'
一梦三年,
松风依旧,
萝月何曾老.
灵幽听微, 谁观玉颜?
灼灼春华, 绿叶含丹.
松风依旧,
萝月何曾老.
灵幽听微, 谁观玉颜?
灼灼春华, 绿叶含丹.
- Methuselar
- 帖子: 122
- 注册时间: 2009-06-04 12:06
- 联系:
Re: linux中的awk用法请教
正则可以啊
代码: 全选
awk -F'\x20| |[[:blank:]]' '{print $1}' <<< "abcdefghijklmnopqrstu vwxyz"
Mea Culpa!