具有n个给定字符的grep行

时间:2018-03-27 22:00:29

标签: regex bash grep

我有一个包含文件路径的文件。例如,看起来像这样:

bq

我有一个变量bq update --time_partitioning_type=DAY --norequire_partition_filter \ <dataset_name>.<table name> ... (perform the export) bq update --time_partitioning_type=DAY --require_partition_filter \ <dataset_name>.<table name> ... (resume querying the table) 我想只选择行,/home/smth/a/file1 /home/smth/a/file2 /home/smth/b/file1 /home/smth/a/b/file1 字符恰好出现F_COUNT=4次。

它会返回:

'/'

我尝试使用正则表达式$F_COUNT,特别是我尝试/home/smth/a/file1 /home/smth/a/file2 /home/smth/b/file1 ,但这不起作用。我怎么能这样做?

2 个答案:

答案 0 :(得分:5)

您可以使用awk来计算字段:

F_COUNT=4
awk -F/ -v num="$F_COUNT" 'NF == num+1' file

/home/smth/a/file1
/home/smth/a/file2
/home/smth/b/file1

答案 1 :(得分:2)

根据要求使用

F_COUNT=4
grep -E "^(/[^/]+){$F_COUNT}$" file

输出:

/home/smth/a/file1
/home/smth/a/file2
/home/smth/b/file1