我正在处理具有约 4 亿行和 3 列的文件。前两列是字母数字字符串,而最后一列是数字。像这样的东西:
NM_001011874.1,NM_011441.4,-0.131672299779153
Run Code Online (Sandbox Code Playgroud)
我有多个这样的文件,它们的行数和 3 列数大致相同。这些不一定基于 3 列中的任何一列进行排序。我正在尝试根据前两列的组合来组合这些文件。例如:
File 1
NM_001011874.1,XR_104537.1,-0.929524370261122
NM_001011874.1,XM_003084433.1,-0.603098764428879
File 2
NM_001011874.1,XR_104537.1,-0.11254525414
NM_001011874.1,NM_005040.1,-0.20509876488
File 3
NM_001011874.1,XR_104537.1,-0.41254525414
NM_001011874.1,NM_005040.1,-0.60509876488
Run Code Online (Sandbox Code Playgroud)
我想要做的是通过使用前两列中的值组合来创建一个键,然后从该对的第三列中检索相应的值。我得到的最终输出是:
Output2 
NM_001011874.1,XR_104537.1,-0.11254525414,-0.929524370261122,-0.41254525414
NM_001011874.1,NM_005040.1,-0.20509876488,,-0.60509876488
Run Code Online (Sandbox Code Playgroud)
我正在使用 awk 执行上述操作:
awk -F',' 'NR==FNR{a[$1,$2]=$3;next}{$4=a[$1,$2];print}' OFS=',' file1.txt file2.txt
Run Code Online (Sandbox Code Playgroud)
我为任务分配了 256GB。使用上述命令通过组合两个文件来生成输出大约需要 90 分钟,其中每个文件有大约 4 亿行和 3 列。输出文件再次有大约 4 亿行但有 4 列。每添加一列,生成输出文件所花费的时间就会增加。
我是按顺序进行的,即合并 file1 和 file2 以生成具有 4 列的 output1。然后合并 file3 和 output1 以生成具有 5 列的 output2,然后将 file4 和 output2 合并以生成具有 6 列的 output3,依此类推,直到我得到具有 22 列的最终输出。
我想知道在 Python 或 Perl 中执行此操作在速度和自动化方面是否更有效?我有大约 20 个这样的文件,每个文件有 3 …
我有一个文件名列表(名称加扩展名),我只想提取不带扩展名的名称。
我在用着
ls -l | awk '{print $9}' 
Run Code Online (Sandbox Code Playgroud)
列出文件名,然后
ls -l | awk '{print $9}' | awk /(.+?)(\.[^.]*$|$)/'{print $1}'
Run Code Online (Sandbox Code Playgroud)
但我在转义时遇到错误(:
-bash: syntax error near unexpected token `('
Run Code Online (Sandbox Code Playgroud)
隔离名称的正则表达式(.+?)(\.[^.]*$|$)有一个捕获组,我认为它是正确的,但我不知道它在 awk 语法中不起作用。
ABCDEF.ext我的文件列表在根文件夹中是这样的。
我的 json 文件看起来像这样。
我有超过 5000 个文件:文件名:xxxx.json
示例文件1000.json
[
  {
    "gender": {
      "value": "Female"
    },
    "age": 38.58685,
    "age_group": "adult"
  },
  {
    "gender": {
      "value": "Male"
    },
    "age": 26.64953,
    "age_group": "adult"
  }
]
Run Code Online (Sandbox Code Playgroud)
示例文件2000.json
[
  {
    "gender": {
      "value": "Male"
    },
    "age": 63.8272,
    "age_group": "adult"
  },
  {
    "gender": {
      "value": "Male"
    },
    "age": 11.8287,
    "age_group": "child"
  }
]
Run Code Online (Sandbox Code Playgroud)
一个文件output.txt 中的所需输出
1000 & Female,Male & 38,26 & adult,adult 
 2000 & Male,Male & 63,11 & adult,child
显示最年轻和最老日期的命令是什么样的?输入是默认给出的,因此它应该是不使用文件目录的输入。例如:
1910-04-21
2015-03-05
1930-01-23
1908-06-02
2015-07-13
Run Code Online (Sandbox Code Playgroud)
结果应该是:
1908-06-02
2015-07-13
Run Code Online (Sandbox Code Playgroud)
我尝试使用AWK来实现它,但是我该如何编写呢?
如何在遵循规则的同时将字符串转换为标题大小写,而不仅仅是简单地将单词的每个首字母大写?
示例规则:
在bash中执行此操作的任何简单方法?单行赞赏.
(正如另外一点,这是用于parcellite行动.)
我有unix文件
a,b,c,d
e,f,g,h
u,v,x,y
Run Code Online (Sandbox Code Playgroud)
我想分开打印第一个col和其他所有col
即
a,b
a,c
a,d
e,f
e,g
e,h
Run Code Online (Sandbox Code Playgroud)
等等
提前致谢
所以,我正在尝试显示/打印文件的每三行.
所以它会是这样的
    third line
    sixth line 
    ninth line 
    twelfth line.
Run Code Online (Sandbox Code Playgroud)
它必须是一行awk命令.
例如,我有一个看起来像这样的文件:
2
4
7
-3
5
-2
Run Code Online (Sandbox Code Playgroud)
我需要输出看起来像这样:
2
6
13
10
15
13
Run Code Online (Sandbox Code Playgroud) 我正在寻找一个perl命令,其中打印以字符串开头的行.例如,如果我想打印以"1234"开头的所有行,该命令会是什么样的?桑达?AWK?grep的?
可能这个问题多次被问到能否在你的perl脚本中加入awk one liner.但是这些问题对于以下问题过于具体:
示例:我有输出,ls -lart第9列是文件名.我很容易在awk中做到这一点ls -lart|awk '{print $9}'.同样的事情当然可以使用perl来完成readdir().但是在perl中提取第8列或第7列并不容易?如果我必须提取数据管道将其管道输送到sed等,情况会变得更糟.
另一个例子: 我有一个特定的DIR,它有许多格式的文件,如:
ABC_9090_DEF_10-22-30_13-07-2014.temp
Run Code Online (Sandbox Code Playgroud)
注意date_time.temp标记部分.这里的格式是ABC_4digits_DEF_hours-minutes-seconds_day-month-year
我想只看到刚刚创建的新文件(比如说从现在起5分钟之前).使用awk/sed的方法是(伪代码,让我知道你是否需要我复制实际的一个班轮):
ls -lart|awk '{print $9}'|egrep 提取10-22-30_13-07-2014问题: 但由于某种原因(其他复杂性)我想在perl中编写它并且我发现当使用系统命令在perl中使用它时,if条件if($ 1> $ mynum)会抛出错误.它说使用'>'语法错误,即使使用单引号,双引号,没有引号.
有人可以告诉我一般情况:
有两个输入文件,如下面的行所示.
列3和4 input1保持一个范围(例如,1到78第一行中)
第2列input2保持单个位置值(例如32在第一行中),其对应于列中的一个范围input1,以及第2 列中的对应值:在这种情况下B100002.
我想为文件的第2列中的每个值生成一个文件,其中包含相对于范围起点的位置 input1
例如,358-344 + 1 = 15是相对位置值 B100043
Scaffold_1      B100002        1       78
Scaffold_1      B100041        179     243
Scaffold_1      B100043        344     418
Scaffold_1      B100045        519     583
Scaffold_1      B100058        684     751
Scaffold_1      B100059        852     915
Scaffold_1      B100066        1016    1079
Scaffold_1      B100080        1180    1246
Scaffold_1      B100111        1347    1413
Scaffold_1      B100118        1514    1585
Scaffold_2      B123465        31531   31595
Run Code Online (Sandbox Code Playgroud)
Scaffold_1      32
Scaffold_1      358
Scaffold_2      31533
Run Code Online (Sandbox Code Playgroud)
B100002 …Run Code Online (Sandbox Code Playgroud)