使用awk从文件中查找字符串中的可变长度数字?

时间:2018-01-23 10:18:45

标签: bash unix awk text-processing

我在UNIX上有很多文件,希望在与指定模式关联的文件中获取数字。

大部分文件在文件中都有一个独特的模式,如下所示

some text abc
some text abc
some text abc
(3 rows)

我想使用awk仅打印数字3

数字可能因文件而异,也可能是35644或任何数值。

我想使用awk而不是sed或grep找到该号码,因为HP unix不支持高级sed / grep功能。

3 个答案:

答案 0 :(得分:0)

以下是否适用于您?

override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
    let item = dataSource[indexPath]
    if item.isExpanded {
        return 144
    }
    return 44
}

如果sed -e 's/(\([0-9][0-9]*\) rows)/\1/;t;d' (N rows)的替换网络成功,N会转到脚本末尾,否则t会删除该行(即所有行)将不包含表达式。)

答案 1 :(得分:0)

由于您不想(或者您不能)使用简单的 sed 方法,所以 awk < / strong>解决方案:

示例输入文件:

$ head file[123]
==> file1 <==
some text abc
some text abc
some text abc
(3 rows)

==> file2 <==
some text abc
some text abc
some text abc
some text abc
some text abc
(5 rows)

==> file3 <==
some text abc
some text abc
(2 rows)
$ for f in file[123]; do awk 'END{ print FILENAME, substr($1, 2) }' "$f"; done
file1 3
file2 5
file3 2

sed 解决方案(在我的变体中)看起来像:

for f in file[123]; do echo -n "$f "; sed -n '$ s/[() ]\|rows//gp' "$f"; done

答案 2 :(得分:0)

也许这个awk

awk -v RS='(' 'END{print $1}' infile