【发布时间】:2016-08-24 05:24:42
【问题描述】:
我有一个文本文件,其中每一行如下所示:
a_1/b_1/c_1
a_2/b_2/c_2
a_3/b_3/c_3
...
其中 a_n、b_n 和 c_n 可以是从 M 到 N 的任意数字。例如,M=1 和 N=10,我的输入文件包含以下数据:
1/2/3
1/4/2
1/4/10
1/5/2
2/2/1
2/3/4
我想要的是打印输入中未包含的所有可能行:
1/1/1
1/1/2
1/1/3
...
1/1/10
1/2/1
1/2/2
1/2/4
...
1/2/10
1/3/1
...
1/3/10
1/4/1
1/4/3
...
1/4/9
1/5/1
1/5/3
...
1/10/9
1/10/10
2/1/1
...
2/1/10
2/2/1
...
2/3/3
2/3/5
...
10/10/9
10/10/10
我应该使用什么工具(如果可能,我更喜欢使用 AWK),我应该选择哪种方式来解决这个任务?
【问题讨论】:
-
您想要
a_、b_和c_还是只是在a_、b_和c_之后尚未找到的数字(这就是您所显示的,但目前尚不清楚这是否只是简写)- 或者a_、b_和c_只是用来显示有3数字? -
@David:我不明白这个问题。
a_、b_和c_是什么意思?我用下划线表示mathematical subscripts,所以a_1 = a₁。在我的示例的第一行中,a₁=1, b₁ = 2, c₁=3。 -
我想通了。您只是使用
abc作为示例参考。不清楚你什么时候说"I have an input file..."和a_1/b_1/c_1... -
grep -vf test <(echo "$(printf "%s\n" {1..10}/{1..10}/{1..10})")
标签: bash shell unix awk command-line