我有一个看起来像这样的文件:
文件:
900 1 37
900 2 41
900 3 278
918 1 9999
918 2 9999
918 3 9999
我想获得一个看起来像这样的新文件:
918 1 37
918 2 41
918 3 278
我想从上一组数字(900)中取出最后一列,并将其用于下一组数字(918)的最后一列。
我要替换的值始终是 9999。基本上我想用最后一个“有效”值替换所有 9999 的值(例如,当我有不同于 9999 的值时)。
我有一个看起来像这样的文件:
文件:
900 1 37
900 2 41
900 3 278
918 1 9999
918 2 9999
918 3 9999
我想获得一个看起来像这样的新文件:
918 1 37
918 2 41
918 3 278
我想从上一组数字(900)中取出最后一列,并将其用于下一组数字(918)的最后一列。
我要替换的值始终是 9999。基本上我想用最后一个“有效”值替换所有 9999 的值(例如,当我有不同于 9999 的值时)。
我有一个看起来像这样的文件:
文件1:
0/28
7200/11
14400/11
21584/28
21600/11
28800/28
36000/11
36000/28
43200/11
43200/28
50400/11
57600/11
79200/28
在左侧(在 / 之前)我有以秒为单位的时间,而在右侧我有一个相应秒的参数值。
现在我有另一个看起来像这样的文件:
文件2:
0 14
0 15
0 20
0 28
7200 11
7200 14
7200 15
现在,我想从第二个文件中删除 FILE1 中的公共值。例如,我应该从 FILE2 中删除:
0 28
7200 11
并保持其余行不变。
我正在考虑在 bash 脚本中为 FILE1 中的每一行使用 for 循环,然后在 FILE2 中搜索它,但我无法识别该模式。如果我尝试从 awk 使用 substr 它将不起作用,因为时间没有相同的数字(0 有 1 个数字,7200 有 4 个数字)。
要阅读 FILE1 我正在做这样的事情:
IFS=$'\n' read -d '' -r -a X < ./FILE1.csv
为了编写 for 循环,我正在做这样的事情:
for x in "${X[@]}"
do
gawk -i inplace -v var=${x} '{...}' FILE2.csv
done
我也在考虑将 FILE1 转换为这样的东西:
0 28
7200 11
14400 11
21584 28
21600 11
28800 28
36000 11
36000 28
43200 11
43200 28
50400 11
57600 11
79200 28
基本上有 2 列,但使用我上面使用的 for 和 var,如果我有超过 1 列,则将不起作用。我认为第二种方法更好,但我不知道如何让它单独处理每一列。
编辑:
如果 FILE1 是,我将如何做到这一点:
0 28
7200 11
14400 11
21584 28
21600 11
28800 28
36000 11
36000 28
43200 11
43200 28
50400 11
57600 11
79200 28
文件 2 是:
0 14 2 19
0 15 157 67
0 20 28 57
0 28 25 67
7200 11 88 14
7200 14 34 247
7200 15 364 14
我有一个看起来像这样的文件,是用 Python 计算的:
1.00000100e+07
1.00000000e+04
1.11000111e+08
1.11000000e+05
现在,我想获得这样的东西:
010000010
000010000
111000111
000111000
这个想法是我想添加零以获得 9 位的固定格式。我编写的 Python 代码给了我二进制数,但为了进一步解码,我需要这些二进制数有 9 位。我试图从 Python 以所需的格式获取它们,但我无法做到这一点。
我希望我的解释清楚。
更新:
Python代码:
#!/usr/bin/env python3
import numpy as np
from numpy import genfromtxt
import os
day = os.environ.get('day')
Array = genfromtxt("SUC_diffzeros_"+str(day)+".csv")
final = np.zeros(len(Array))
def decimaltobinary(x):
for i in range(len(x)):
print(x[i])
final[i] = "{0:09b}".format(x[i])
print(final)
var = np.column_stack([Array, final])
np.savetxt("SUC_diffzeros_"+str(day)+".csv", var, fmt='%.8e')
if __name__ == '__main__':
val = Array.astype(int)
decimaltobinary(val)
我有一个看起来像这样的文件:
120E+00 360E+01 258E-09-784E+02
-847E+00-360E+01 242E-08 420E+05
14E+00 360E+01 254E+00 78E+02
-120E+00-254E-01-223E-09-786E-02
E+00,E+01,E-01 等采用科学计数法表示 ^0,^1,^-1 等。
我想获取以下格式的文件:
120E+00 360E+01 258E-09 -784E+02
-847E+00 -360E+01 242E-08 420E+05
14E+00 360E+01 254E+00 78E+02
-120E+00 -254E-01 -223E-09 -786E-02
我想在负数之前添加一个空格,而不修改科学计数法或负数本身。
如果负数是行中的第一个(第一列),我也不想添加空格,只是从第 2 列到行尾。
我也想用awk。
我希望我的解释清楚。
谢谢!
我有 file1 看起来像这样:
0 0
0 1
0 8
ST1 2 3
5 2
2 2
ST3 4 3
4 2
5 5
ST5 1 9
1 5
7 8
所需的输出文件:
ST1 6 5 2
ST3 12 4 5
ST5 9 1 7
如何解决这个问题?我想用awk。我不知道如何编写算法,以便我可以处理这些行以使其看起来像所需的输出。
这个想法是我想找到模式(ST)并从那个点开始处理。
输出文件方案:ST*,column2 乘以我们有“ST”的行的第 3 列,“ST”下方的行的第 1 列,但直到下一个“ST”出现。
我也不想在第一个 ST* 之前处理任何内容。