一个awk正则表达式的问题: awk '{if($3="FuTian" && $4="M")print $0}' student.dat
student.dat文件为:Tom116001FuTianM90John116005NanShanM85Mary116018LuoHuW65Steven116030Ya...
student.dat文件为:
Tom 116001 FuTian M 90
John 116005 NanShan M 85
Mary 116018 LuoHu W 65
Steven 116030 YanTian M 78
为从文件中抽取家住福田区(FuTian)的男同学。
一本书上用了 awk '{if($3="FuTian" && $4="M")print $0}' student.dat
可是,我执行后得到的结果却是:
Tom 116001 1 M 90
John 116005 1 M 85
Mary 116018 1 M 65 //注意这行,它改变了性别值。
我用了另外一条,awk '{if($3~/FuTian/&&$4~/M/)print $0}' student.dat
得到了预期的结果:
Tom 116001 FuTian M 90
我的问题是:用第一条命令,错误在哪?(还改变了性别值)
Steven 116030 1 M 78
第一条命令的执行结果是:
Tom 116001 1 M 90
John 116005 1 M 85
Mary 116018 1 M 65 //请注意这行。
Steven 116030 1 M 78
(前面编辑问题时出现了点问题,特此补充) 展开
Tom 116001 FuTian M 90
John 116005 NanShan M 85
Mary 116018 LuoHu W 65
Steven 116030 YanTian M 78
为从文件中抽取家住福田区(FuTian)的男同学。
一本书上用了 awk '{if($3="FuTian" && $4="M")print $0}' student.dat
可是,我执行后得到的结果却是:
Tom 116001 1 M 90
John 116005 1 M 85
Mary 116018 1 M 65 //注意这行,它改变了性别值。
我用了另外一条,awk '{if($3~/FuTian/&&$4~/M/)print $0}' student.dat
得到了预期的结果:
Tom 116001 FuTian M 90
我的问题是:用第一条命令,错误在哪?(还改变了性别值)
Steven 116030 1 M 78
第一条命令的执行结果是:
Tom 116001 1 M 90
John 116005 1 M 85
Mary 116018 1 M 65 //请注意这行。
Steven 116030 1 M 78
(前面编辑问题时出现了点问题,特此补充) 展开
3个回答
展开全部
C语言中用system() 执行shell命令:system("shell命令")
主要需要解释的是awk,awk主体中的语法其实与C类似,只不过其中用到了正则匹配。
格式:awk '' 文件
backbone.c就是awk要处理的文件。
$0~/^\\/\\*\\*/ :
格式:$0 ~ /正则表达式/
作用:判断$0是否匹配正则表达式 ^\\/\\*\\*
含义:awk是逐行读入并处理的,$0代表整行数据;
正则表达式中 ^ 表示一行的开头,斜杠前要加转义符以免被认为是正则表达式的定界符,*表示匹配0个或多个前面的字符。
总体来讲,就是只处理backbone.c文件中匹配 /^\\/\\*\\*/ 的行与匹配 /\\*\\*\\// 的行中间的内容,并通过print打印到屏幕。
主要需要解释的是awk,awk主体中的语法其实与C类似,只不过其中用到了正则匹配。
格式:awk '' 文件
backbone.c就是awk要处理的文件。
$0~/^\\/\\*\\*/ :
格式:$0 ~ /正则表达式/
作用:判断$0是否匹配正则表达式 ^\\/\\*\\*
含义:awk是逐行读入并处理的,$0代表整行数据;
正则表达式中 ^ 表示一行的开头,斜杠前要加转义符以免被认为是正则表达式的定界符,*表示匹配0个或多个前面的字符。
总体来讲,就是只处理backbone.c文件中匹配 /^\\/\\*\\*/ 的行与匹配 /\\*\\*\\// 的行中间的内容,并通过print打印到屏幕。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
awk 等于是==,$3=="FUTIAN" && $4=="M"就可以了
=相当于赋值
=相当于赋值
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询