在awk中以特定方式重命名第一列
这是我的输入文件在awk中以特定方式重命名第一列,awk,text-processing,Awk,Text Processing,这是我的输入文件 900 mgdg molecules in water t= 953400.00000 step= 635600000 177255 1BGL C5 1 4.977 15.059 2.068 1BGL H5 2 5.025 15.020 2.158 1BGL O5 3 4.881 14.948 2.052 ...(a lot of lines between) ... 4LI
900 mgdg molecules in water t= 953400.00000 step= 635600000
177255
1BGL C5 1 4.977 15.059 2.068
1BGL H5 2 5.025 15.020 2.158
1BGL O5 3 4.881 14.948 2.052
...(a lot of lines between)
...
4LIN HI216099 1.909 19.279 7.886
4LIN HI316100 1.849 19.417 7.987 (the last line, which I want to modify is 116102)
...
...
20389SOL HW177254 0.325 8.307 3.850
20389SOL HW277255 0.245 8.235 3.957
5.75588 25.65343 12.14665
我的输出文件应该如下所示
900 mgdg molecules in water t= 953400.00000 step= 635600000
177255
1MGD C5 1 4.977 15.059 2.068
1MGD H5 2 5.025 15.020 2.158
1MGD O5 3 4.881 14.948 2.052
...(a lot of lines between)
...
900MGD HI216099 1.909 19.279 7.886
900MGD HI316100 1.849 19.417 7.987 (the last line, which I want to modify is 116102)
...
...
20389SOL HW177254 0.325 8.307 3.850
20389SOL HW277255 0.245 8.235 3.957
5.75588 25.65343 12.14665
我只想修改100个文件中的第一列。每129行我就增值。例如,第一列中的第3-131行有1MGD,然后是第132-260-2MGD行,直到116102行
这是我的剧本,但没用
#!/bin/bash
for index in {1..100}
do
awk 'BEGIN { grp = 129 }
{if (NR>=3 && NR<=116102) {
for (i=1; i<=116102; i++) {
$1 = (int($i/grp)+1)"MGD"
}
}; print $0}' eq15_$index.gro | tee eq2_15_$index.gro
done
#/bin/bash
对于{1..100}中的索引
做
awk'开始{grp=129}
{如果(NR>=3&&NR
要每3行修改第3-11行,请执行以下操作:
> awk 'NR>=3 && NR<=11{ x=int( (NR-3)/3+1);$1 = x"MGD"}1' file
900 mgdg molecules in water t= 953400.00000 step= 635600000
177255
1MGD C5 1 4.977 15.059 2.068
1MGD H5 2 5.025 15.020 2.158
1MGD O5 3 4.881 14.948 2.052
2MGD C5 1 4.977 15.059 2.068
2MGD H5 2 5.025 15.020 2.158
2MGD O5 3 4.881 14.948 2.052
3MGD O5 3 4.881 14.948 2.052
3MGD HI216099 1.909 19.279 7.886
3MGD HI316100 1.849 19.417 7.987 (the last line, which I want to modify
20389SOL HW177254 0.325 8.307 3.850
20389SOL HW277255 0.245 8.235 3.957
5.75588 25.65343 12.14665
>awk'NR>=3&&NR请您的问题显示一个包含简明、可测试的样本输入和预期输出的示例。为了使示例最小化,您可以将100个文件更改为2个文件,将129行更改为3行,将116102行更改为8行,等等,这样您就可以发布2个样本输入文件,每个样本输入文件不超过10行(没有任何…
s)但会重现您的问题,您可以在以后扩展自己以应用您的实际价值。例如,给我们一些澄清您的需求的东西,我们可以测试潜在的解决方案。
900 mgdg molecules in water t= 953400.00000 step= 635600000
177255
1BGL C5 1 4.977 15.059 2.068
1BGL H5 2 5.025 15.020 2.158
1BGL O5 3 4.881 14.948 2.052
1BGL C5 1 4.977 15.059 2.068
1BGL H5 2 5.025 15.020 2.158
1BGL O5 3 4.881 14.948 2.052
1BGL O5 3 4.881 14.948 2.052
4LIN HI216099 1.909 19.279 7.886
4LIN HI316100 1.849 19.417 7.987 (the last line, which I want to modify
20389SOL HW177254 0.325 8.307 3.850
20389SOL HW277255 0.245 8.235 3.957
5.75588 25.65343 12.14665
> awk 'NR>=3 && NR<=11{ x=int( (NR-3)/3+1);$1 = x"MGD"}1' file
900 mgdg molecules in water t= 953400.00000 step= 635600000
177255
1MGD C5 1 4.977 15.059 2.068
1MGD H5 2 5.025 15.020 2.158
1MGD O5 3 4.881 14.948 2.052
2MGD C5 1 4.977 15.059 2.068
2MGD H5 2 5.025 15.020 2.158
2MGD O5 3 4.881 14.948 2.052
3MGD O5 3 4.881 14.948 2.052
3MGD HI216099 1.909 19.279 7.886
3MGD HI316100 1.849 19.417 7.987 (the last line, which I want to modify
20389SOL HW177254 0.325 8.307 3.850
20389SOL HW277255 0.245 8.235 3.957
5.75588 25.65343 12.14665