【发布时间】:2014-08-07 20:16:26
【问题描述】:
我对编写脚本和尝试在 bash 中解决问题非常陌生。我有一个数据文件,其中包含如下所示的信息:
2 aa11_1.aaa aa11_1.aaa aa11_1.aaa aa11_1.aaa aa11_1.aaa aaaa.aaa 11111 aaaa 1111 [1] 1
4 aa11_1.aaa aa11_1.aaa aa11_1.aaa aa11_1.aaa aa11_1.aaa aaaa.aaa 11111 aaaa 1111 [1] 1
8 aa11_1.aaa aa11_1.aaa aa11_1.aaa aa11_1.aaa aa11_1.aaa aaaa.aaa 11111 aaaa 1111 [1] 1
10 aa11_1.aaa aa11_1.aaa aa11_1.aaa aa11_1.aaa aa11_1.aaa aaaa.aaa 11111 aaaa 1111 [1] 1
12 aa11_1.aaa aa11_1.aaa aa11_1.aaa aa11_1.aaa aa11_1.aaa aaaaa.aaa 11111 aaaa 1111 [1] 1
14 aa11_1.aaa aa11_1.aaa aa11_1.aaa aa11_1.aaa aa11_1.aaa aaaa.aaa 11111 aaaa 1111 [1] 1
16 aa11_1.aaa aa11_1.aaa aa11_1.aaa aa11_1.aaa aa11_1.aaa aaaaa.aaa 11111 aaaa 1111 [1] 1
18 aa11_1.aaa aa11_1.aaa aa11_1.aaa aa11_1.aaa aa11_1.aaa aaaa.aaa 11111 aaaa 1111 [1] 1
20 aa11_1.aaa aa11_1.aaa aa11_1.aaa aa11_1.aaa aa11_1.aaa aaaaa.aaa 11111 aaaa 1111 [1] 1
24 aa11_1.aaa aa11_1.aaa aa11_1.aaa aa11_1.aaa aa11_1.aaa aaaaa.aaa 11111 aaaa 1111 [1] 1
26 aa11_1.aaa aa11_1.aaa aa11_1.aaa aa11_1.aaa aa11_1.aaa aaaaa.aaa 11111 aaaa 1111 [1] 1
28 aa11_1.aaa aa11_1.aaa aa11_1.aaa aa11_1.aaa aa11_1.aaa aaaa.aaa 11111 aaaa 1111 [1] 1
30 aa11_1.aaa aa11_1.aaa aa11_1.aaa aa11_1.aaa aa11_1.aaa aaaa.aaa 11111 aaaa 1111 [1] 1
32 aa11_1.aaa aa11_1.aaa aa11_1.aaa aa11_1.aaa aa11_1.aaa aaaaa.aaa 11111 aaaa 1111 [1] 1
*a 代表各种字母,1 代表各种数字。
这些列表都应该从 2 到 32 以 2 为基础垂直下降,但是很多列表都缺少几个组件,例如我在上面发布的那个缺少 6 和 22。我正在尝试什么要做的是编写一个脚本,检查每个数字是否存在,如果没有,在前面添加一行数字,后面没有其他内容,这样你就有了:
2 aa11_1.aaa aa11_1.aaa aa11_1.aaa aa11_1.aaa aa11_1.aaa aaaa.aaa 11111 aaaa 1111
[1] 1
4 aa11_1.aaa aa11_1.aaa aa11_1.aaa aa11_1.aaa aa11_1.aaa aaaa.aaa 11111 aaaa 1111 [1] 1
6
8 aa11_1.aaa aa11_1.aaa aa11_1.aaa aa11_1.aaa aa11_1.aaa aaaa.aaa 11111 aaaa 1111 [1] 1
...
根据我的阅读,我相信 AWK 功能最有可能成功,但我不知道如何让它发挥作用。谢谢!
【问题讨论】:
-
好吧,你必须不使用
*'s 和.'s 作为你的数据示例,使用你提供的内容显示实际数据(数字、字母等)产生令人敬畏的回复,因为.和*都是正则表达式语法的一部分。解决问题,我将撤消我对您的问题的 -1 -
我认为这似乎是一个完美的场景,只需逐行阅读并检查您所在的行是否以您期望的数字开头。这将是插入该行并将其写入某个临时文件的最简单方法。
-
我很抱歉这是我的错误。但是,我认为我不能仅仅基于隐私问题发布实际数据。有没有更好的方法可以使用 * 来表示它们?这些时期实际上是数据集的一部分,所以我认为它们不需要更改。
-
@tmanion 这就是我们迄今为止所做的,但是有很多这些文件,为了加快这个过程,我的任务是试图找出一个脚本来自动化这个过程.
-
@ahmedmasud 希望更好!