小编M.S*_*son的帖子

bash在文件中循环查找字符串的开头

我有一个带有约10,000行数据的大文本文件,因此每行可能有不同数量的列。例如:

789 KKPP 2018 08 09 10 20 30 AUTO A2987 10SM 5-MIN 22/13
790 KGOX 2018 08 09 10 20 35 AUTO P0002 21/19
...
798 KLXZ 2018 08 09 10 20 40 AUTO 18013GT 7SM 21/16 RMK A02 T02060156
799 KMNO 2018 08 09 10 20 45 AUTO 10SM P0001
...
...
Run Code Online (Sandbox Code Playgroud)

我想遍历每一行并提取出现前缀“ P00 *”的第二列。例如,在文件的以上代码段中,我想要:

KGOX P0002
KMNO P0001
Run Code Online (Sandbox Code Playgroud)

对应于线790和799。列数是完全随机的,并且可以从一行更改为另一行。最重要的是,在该行的某处,某些文本列以“ P00”开头。

我有一个简单的while读取循环:

 while IFS='' read -r line || [[ -n "${line}" ]];
 do
 temp=$(echo ${line} | awk '{print …
Run Code Online (Sandbox Code Playgroud)

bash awk

3
推荐指数
1
解决办法
120
查看次数

awk 计算唯一出现次数并打印其他列

我有以下代码:

awk '{h[$1]++}; END { for(k in h) print k, h[k]}' ${infile} >> ${outfile2}
Run Code Online (Sandbox Code Playgroud)

这实现了我想要的部分功能:打印出唯一值,然后还计算这些唯一值出现的次数。现在,我想从每个唯一值中打印出第二列和第三列。由于某种原因,以下似乎不起作用:

awk '{h[$1]++}; END { for(k in h) print k, $2, $3, h[k]}' ${infile} >> ${outfile2}
awk '{h[$1]++}; END { for(k in h) print k, h[$2], h[$3], h[k]}' ${infile} >> ${outfile2}
Run Code Online (Sandbox Code Playgroud)

第一个代码打印出最后一个索引的第二列和第三列,而第二个代码除了 k 和 h[k] 之外什么也不打印。

${infile} 看起来像:

20600        33.8318 -111.9286       -1     0.00        0
20600        33.8318 -111.9286       -1     0.00        0
30900        33.3979 -111.8140       -1     0.00        0
29400        33.9455 -113.5430       -1     0.00        0
30600        33.4461 -111.7876       -1 …
Run Code Online (Sandbox Code Playgroud)

awk uniq

1
推荐指数
1
解决办法
1440
查看次数

python将多个数组加在一起

我有一个大型数组中包含多个5x5数组-总体形状为:5 x 5 x29。我想对每个5 x 5数组求和以生成一个单个数组,而不是29个单个数组。

我知道您可以按照以下方式进行操作:

new_data = data1[:,:,0] + data1[:,:,1] + ... + data1[:,:,29]
Run Code Online (Sandbox Code Playgroud)

但是,这对于大型阵列而言非常麻烦。有没有更简单的方法可以做到这一点?

python arrays indexing sum

0
推荐指数
1
解决办法
63
查看次数

标签 统计

awk ×2

arrays ×1

bash ×1

indexing ×1

python ×1

sum ×1

uniq ×1