bash - grep 所有至少包含 X 个单词的行
问题描述
我有一个名为 a.sh 的脚本,它产生一个输出 - 一些文本行。
我有另一个名为 b.sh 的脚本,我想获取 a.sh 的输出并将其保存在一个变量中。
甚至更好地立即对其进行管道传输并删除所有太短的行 - 这意味着所有单词数量少于 X 的行。每个单词由一个空格(或多个空格)分隔
我怎样才能做到这一点?
解决方案
我会将脚本 awk 用管道传输并让它计算单词:awk '{ if (NF>4) { print }}'
Awk 的默认字段分隔符将行分隔为单词。这意味着if
字段数 ( NF
) 多于 ( >
) 4
awk 将print
成为该行。
它可以缩短为,awk 'NF>4'
因为 awk 的默认操作是打印。
另一种方法是使用wc
(因为它实际上代表字数)。您可以像这样在 b 脚本中使用它:
while read line; do
if [[ $(wc -w <<< "$line") -gt 4 ]]
then
echo $line
fi
done
推荐阅读
- sql - 从 SQL 响应中读取 uniqueidentifier 时出现问题
- arrays - Mongodb通过键值更新嵌套数组
- python - 如何在熊猫中对数据类别进行汇总?
- python-3.x - ValueError:尺寸必须相等(keras)
- javascript - 执行 npm install angular-firebase --save 时出错
- android - 如何在android中阻止相机切换?
- spring-webflux - 如何使用 `Function 增加主题消费者吞吐量
, 通量 >`? - javascript - 如何根据多个条件过滤我的数据?
- oracle - Oracle 视图对象类型列
- xamarin - MVVMCross MvxDialogFragment 恢复问题 - 没有 MvxFragmentPresentationAttribute