我有以下类型的文件,
ATOM 4 C4 UNK X 1 7.747 4.310 5.563 1.00 0.00 C
ATOM 5 C5 UNK X 1 8.900 3.705 6.021 1.00 0.00 C
ATOM 6 C6 UNK X 1 9.622 2.872 5.185 1.00 0.00 C
- 最多3564行。
我想每33行将第六列增加1。我之前看过帖子并找到了这段代码,
gawk -v n=1 '
match($0,/^(.{22})....(.*)/, f) {printf "%s%4d%s\n", f[1], n, f[2]}
NR % 20 == 0 {n++}
{print}
' file
上述文件的输出是:
ATOM 3556 H10 UNK X 178 30.121 19.518 46.272 1.00 0.00 H
ATOM 3556 H10 UNK X 1 30.121 19.518 46.272 1.00 0.00 H
可以建议我,如何每33行增加第六列?
答案 0 :(得分:1)
这可能就足够了:
awk '{$6=int(NR/33)+1}1' input.txt
这将使用基于行号的整数替换字段6。表达有点明显。 +1
就在那里,因为,例如,在第21行,NR / 33 = 0.6363,int()
截断为零。
“脚本”末尾的尾随1
打印该行,因为它的计算结果为“true”,而在awk中,缺少的语句默认为{print}
。
请注意,在awk中,每当您更改字段数据时,awk都会重新处理该行以减少空格,将所有字段分隔符替换为OFS
。
答案 1 :(得分:0)
这可能是你想要的,但没有可测试的样本输入和预期输出,我们只是在猜测:
$result = odbc_exec ($conn,$stmt);
echo "Result1: ";
var_dump( $result );
if($result)
{
var_dump( odbc_error($conn) );
var_dump( odbc_errormsg($conn) );
}
例如:
awk '{$6+=val; print} !(NR%33){++val}' file
答案 2 :(得分:0)
如果只想增加第(33 * n)行,可以这样做。
awk '!(NR%33){$6+=++p} 1'
第33行将增加1,第66行增加2,等等。
答案 3 :(得分:-1)
我将为您提供Python代码,安装Python 3.4以运行它。
import shutil
import os
with open("full_path_to_file", "r") as f, open("a.csv", "a") as w:
count = 2
l = next(f)
l = l.split(",")
l = str(int(l[5]) + 1)
w.append(','.join(l))
for line in f:
if count % 33 != 0 or count <= 33:
count += 1
w.write(line)
line = line.split(",")
line[5] = str(int(line[5]) + 1)
w.write(','.join(line))
count += 1
shutil.move(w.name, f.name)
os.remove(w.name)