【发布时间】:2020-05-21 21:14:32
【问题描述】:
在这里,我有一个输入示例,我想用它来生成特定的输出。
1.2840 -1.6830 1.4460 C
1.5660 -0.8240 0.2163 C
0.5584 0.2995 -0.0595 C
-0.8805 -0.1514 -0.2412 C
-1.6205 -0.3785 0.8741 O
-1.4770 0.3883 2.0816 C
-1.3875 -0.2971 -1.3503 O
-2.0561 1.7788 1.8987 C
1.8097 -1.5560 -0.8246 O
2.8979 -0.2777 0.3226 N
1.2555 -1.0711 2.3543 H
0.3266 -2.2122 1.3666 H
2.0525 -2.4514 1.6103 H
0.8193 0.8445 -0.9811 H
0.6122 1.0718 0.7144 H
-0.4400 0.4244 2.4204 H
-2.0425 -0.1400 2.8563 H
-3.0985 1.7209 1.5688 H
-1.5098 2.3359 1.1312 H
-2.0131 2.3425 2.8349 H
3.1017 0.3084 1.1257 H
3.4860 -1.1139 0.2817 H
3.0712 0.1760 -0.5761 H
最后一列对应分子的原子,其他列是这些原子的坐标。
在原始文件中,我有很多与此示例类似的行和很多其他内容,使用一些代码我可以(使用 grep)捕获这些行并隔离,而不是在一个唯一文件中。 但是,问题是对应于原子的列位于坐标的右侧,我需要它位于输出中坐标的左侧。有没有办法做到这一点?
我正在考虑 grep,因为我正在使用它从我的原始文件中提取坐标和原子,但它直到现在才起作用。
以下正是我需要的:
C 1.2840 -1.6830 1.4460
C 1.5660 -0.8240 0.2163
C 0.5584 0.2995 -0.0595
C -0.8805 -0.1514 -0.2412
O -1.6205 -0.3785 0.8741
C -1.4770 0.3883 2.0816
O -1.3875 -0.2971 -1.3503
C -2.0561 1.7788 1.8987
O 1.8097 -1.5560 -0.8246
N 2.8979 -0.2777 0.3226
H 1.2555 -1.0711 2.3543
H 0.3266 -2.2122 1.3666
H 2.0525 -2.4514 1.6103
H 0.8193 0.8445 -0.9811
H 0.6122 1.0718 0.7144
H -0.4400 0.4244 2.4204
H -2.0425 -0.1400 2.8563
H -3.0985 1.7209 1.5688
H -1.5098 2.3359 1.1312
H -2.0131 2.3425 2.8349
H 3.1017 0.3084 1.1257
H 3.4860 -1.1139 0.2817
H 3.0712 0.1760 -0.5761
【问题讨论】:
-
你能展示一个你想要的输出的小例子吗?
-
为此使用
awk。您可以测试特定列,并对结果中的列重新排序。 -
grep仅用于打印与模式匹配的行但看起来您的结果与输入的行相同,为什么您认为grep是正确的?跨度> -
欢迎来到 Stack Overflow。 SO 是面向专业和热情的程序员的问答页面。将您自己的代码添加到您的问题中。您应该至少展示自己为解决这个问题所做的研究。