Hai*_*ani 15 command-line text-processing
我有这个文件:
names average
john:15.02
Mark:09.63
James:12.58
Run Code Online (Sandbox Code Playgroud)
我只想从中提取大于 10 的平均值,因此此示例中的输出应为:
15.02
12.58
Run Code Online (Sandbox Code Playgroud)
des*_*ert 25
awkawk -F: '{if($2>10)print$2}' <filename
Run Code Online (Sandbox Code Playgroud)
-F:– 将F字段分隔符设置为:{if($2>10)print$2}– 对于每一行,测试2nd 字段是否为>10,如果是print则<filename– 让 shell 打开文件filename,这比让它awk这样做更好,请参阅Stéphane Chazelas 对该主题的回答$ <filename awk -F: '{if($2>10)print$2}'
15.02
12.58
Run Code Online (Sandbox Code Playgroud)
也可以添加空格并将模式放在括号外,所以它们是相等的——感谢Stefan指出:
awk -F: '{if($2>10)print$2}' <filename
awk -F: '{ if ( $2 > 10 ) print $2 }' <filename
awk -F: '$2>10{print$2}' <filename
awk -F: '$2 > 10 { print $2 }' <filename
Run Code Online (Sandbox Code Playgroud)
小智 5
使用 grep,您必须使用正则表达式;例如
grep -E ':[^0-9]*[1-9][0-9][0-9]*\.' file | cut -d':' -f2
Run Code Online (Sandbox Code Playgroud)
与 sed 一样:
sed -n 's/.*:[^0-9]*\([1-9][0-9][0-9]*\..*\)/\1/p' file
Run Code Online (Sandbox Code Playgroud)
但是在有序数据上使用 RegEx 容易出错(以我的经验)并且难以阅读;-)。
| 归档时间: |
|
| 查看次数: |
47112 次 |
| 最近记录: |