我有一些文件的名称如下:
d_Ca-1_O_7.dat
d_Ca-1_O_8.dat
d_Ca-1_O_14.dat
d_Ca-1_O_16.dat
d_Ca-1_O_10.dat
在每个文件中,我都有这样的结构:
abcA_BCdef 1 G 1 2.4733 4.6738 7 O 0 0 0
ghiJ_KLmno 1 P 1 2.4811 4.6887 7 O 0 0 0
pqrS_TLxyz 1 L 1 2.4872 4.7000 7 O 0 0 0
...
(the same scheme)
我想制作一个bash脚本来遍历这些文件,比如:
for {i = 7, 8, 14, 16} in d_Ca-1_O_i.dat
并将每个文件转换为以下格式:
A.BC 2.4733 # 0 0 0
J.KL 2.4811 # 0 0 0
S.TL 2.4872 # 0 0 0
...
(the same scheme)
其中每行:
1)第一列:我们减少相同的开始位,相同的结束位
2)第一列:用.
替换_
2)拆下第2、3、4、6、7、8列
4)在第9列每行的开始处添加#
我非常感谢你的帮助
假设您的输入是tab分隔的,下面是一个GNU Awk脚本:
脚本.awk:
在bash的for循环中这样使用:
awk -f script.awk yourfile
例如:
对于第一个字段的转换,脚本在下划线的左边取一个字符,右边取两个字符。下划线将转换为点,字段1中的所有其他字符将被丢弃。你知道吗
相关问题 更多 >
编程相关推荐