linux中的awk用法请教

sh/bash/dash/ksh/zsh等Shell脚本
回复
头像
NewUserFF
帖子: 413
注册时间: 2010-11-19 22:55

linux中的awk用法请教

#1

帖子 NewUserFF » 2013-04-15 23:22

原字符串如下:(v的前面有空格)
abcdefghijklmnopqrstu vwxyz
用awk处理:
echo "abcdefghijklmnopqrstu vwxyz"|awk -F '\s' '{print $1}'

原来想要把空格当成分割符,打印出第一部分abcdefghijklmnopqrstu(因为\s代表空白符),但是awk似乎把\s当成s了,也就是说,把分割符当成了s,打印出了abcdefghijklmnopqr,为什么?哪位高手可以说一下,十分感谢!
头像
枫叶饭团
帖子: 14683
注册时间: 2010-06-16 1:05
系统: Mac OS X
来自: Tencent
联系:

Re: linux中的awk用法请教

#2

帖子 枫叶饭团 » 2013-04-15 23:26

空格是默认的啊,何必呢。。。而且谁说\s就是空白符的,不是所有程序都认的
头像
susbarbatus
帖子: 2966
注册时间: 2010-04-10 16:14
系统: Arch Linux

Re: linux中的awk用法请教

#3

帖子 susbarbatus » 2013-04-15 23:37

~> 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 了都……
沉迷将棋中……
头像
susbarbatus
帖子: 2966
注册时间: 2010-04-10 16:14
系统: Arch Linux

Re: linux中的awk用法请教

#4

帖子 susbarbatus » 2013-04-15 23:39

而且即使想显示指明用空格,这样就好了吧……

代码: 全选

echo "abcdefghijklmnopqrstu vwxyz" | awk -F' ' '{print $1}'
沉迷将棋中……
头像
NewUserFF
帖子: 413
注册时间: 2010-11-19 22:55

Re: linux中的awk用法请教

#5

帖子 NewUserFF » 2013-04-16 9:16

susbarbatus 写了:而且即使想显示指明用空格,这样就好了吧……

代码: 全选

echo "abcdefghijklmnopqrstu vwxyz" | awk -F' ' '{print $1}'
我的最初想法不是这样的,我想在分隔符上用正则
头像
yjcong
帖子: 2470
注册时间: 2006-02-28 3:11

Re: linux中的awk用法请教

#6

帖子 yjcong » 2013-04-16 9:29

NewUserFF 写了:
susbarbatus 写了:而且即使想显示指明用空格,这样就好了吧……

代码: 全选

echo "abcdefghijklmnopqrstu vwxyz" | awk -F' ' '{print $1}'
我的最初想法不是这样的,我想在分隔符上用正则
echo "abcdefghijklmnopqrstu vwxyz" | awk -F'[[:blank:]]' '{print $1}'
一梦三年,
松风依旧,
萝月何曾老.


灵幽听微, 谁观玉颜?
灼灼春华, 绿叶含丹.
头像
Methuselar
帖子: 122
注册时间: 2009-06-04 12:06
联系:

Re: linux中的awk用法请教

#7

帖子 Methuselar » 2013-04-18 15:23

正则可以啊

代码: 全选

awk -F'\x20| |[[:blank:]]' '{print $1}' <<< "abcdefghijklmnopqrstu vwxyz"
Mea Culpa!
回复