当前位置: 技术问答>linux和unix
文件过滤之后为啥会有一个只有“>”符号的一行。
来源: 互联网 发布时间:2016-12-24
本文导语: cat filename.txt | awk '{if($5>2) print($1)}' | sed '1d' | cut -c '1-4' > newfilename.txt 这句语句为啥要有这个 sed ‘1d’这句呢?为啥要删除第一行? 实际情况这样是对的,会产生第一行是 > 的一行,用sed ‘1d’删除是...
cat filename.txt | awk '{if($5>2) print($1)}' | sed '1d' | cut -c '1-4' > newfilename.txt
这句语句为啥要有这个 sed ‘1d’这句呢?为啥要删除第一行?
实际情况这样是对的,会产生第一行是 > 的一行,用sed ‘1d’删除是对的!可问题是为什么会产生这么一行呢?
求答案!
付:
filename.txt的内容如下:
Prog Name Queue Name # Serve Wk Queued # Queued Ave. Len Machine
--------- ------------------- --------- -------- -------- -------
OweMgnt_svr QOweMgnt_s+ 1 0 5 0.0 SITE1
userrelation_s Quserrelat+ 1 0 3 0.0 SITE1
chgphoneaccept Qchgphonea+ 1 0 0 0.0 SITE1
AccPayFee_svr QAccPayFee+ 1 0 0 0.0 SITE1
AccTranBil_svr QAccTranBi+ 1 0 6 0.0 SITE1
micropayment_s Qmicropaym+ 1 0 0 0.0 SITE1
这句语句为啥要有这个 sed ‘1d’这句呢?为啥要删除第一行?
实际情况这样是对的,会产生第一行是 > 的一行,用sed ‘1d’删除是对的!可问题是为什么会产生这么一行呢?
求答案!
付:
filename.txt的内容如下:
Prog Name Queue Name # Serve Wk Queued # Queued Ave. Len Machine
--------- ------------------- --------- -------- -------- -------
OweMgnt_svr QOweMgnt_s+ 1 0 5 0.0 SITE1
userrelation_s Quserrelat+ 1 0 3 0.0 SITE1
chgphoneaccept Qchgphonea+ 1 0 0 0.0 SITE1
AccPayFee_svr QAccPayFee+ 1 0 0 0.0 SITE1
AccTranBil_svr QAccTranBi+ 1 0 6 0.0 SITE1
micropayment_s Qmicropaym+ 1 0 0 0.0 SITE1
|
awk '{if(int($5)>2) print($1)}' 用这个试下
第一行第5个域是Name
默认用的ascii比较,所以第一行符合要求,改成整型的就行了
第一行第5个域是Name
默认用的ascii比较,所以第一行符合要求,改成整型的就行了
|
$ cat filename.txt | awk '{if($5>2) print($1)}'
OweMgnt_svr
userrelation_s
AccTranBil_svr
不会产生 第一行是 > 的一行啊?
OweMgnt_svr
userrelation_s
AccTranBil_svr
不会产生 第一行是 > 的一行啊?
|
什么意思,没看懂
你是想取第5个字段大于2的那行的头4位嘛
cat filename.txt | awk '{if($5>2) print($1)}' | cut -c '1-4' > newfilename.txt
这样就是对的啊,你为什么要加个sed '1d' 把第一行删掉? 第一行第5个字段也是大于2的是符合条件的嘛
当然除非你有自己特殊处理
你是想取第5个字段大于2的那行的头4位嘛
cat filename.txt | awk '{if($5>2) print($1)}' | cut -c '1-4' > newfilename.txt
这样就是对的啊,你为什么要加个sed '1d' 把第一行删掉? 第一行第5个字段也是大于2的是符合条件的嘛
当然除非你有自己特殊处理