小编Joh*_*Tam的帖子

awk,引号(")在选号中的作用?(Linux)

我有一个输入表,部分:

TCTTTTAAAGCCTCCTCAACTGTTTTAGGG  1       0
CACAACTGAAAAGTACAATGTGTTTGCTTC  1       0
CACCATATTTATTTAAAGGAGCATCTAAAT  1       3
ACGAGAAAAAAAAAAGGGGTGACCCCCTGG  3       0
CAAAATATTAATTCTTTACTATGAAACTTA  1       0
TTCTATTTTGTCGTGGTTAGCAACCATCAC  6       5
TAATAATAAAATAATGAAAAAGAAAAATCA  1       0
AAAGCATTTGAAGGTGACAAAAGGGAAAGT  20      7
TGCTAAGGAAGAATCATGGAAGAGTGTTTT  0       1
CTCCCTTCCTCGCAAACATGCTTGCCCAGG  0       1
AATAAAAATCAAATTTAGTGACGGGTTGAG  130     4
AGAACGAAGCTGATATAAAGACATCAAAGA  1       0
TGCCCCTAATGCAGCATCTCTCTCTCCCTC  1       0
CCACAAAATAATTACATGGCAAACACGAGT  1       0
Run Code Online (Sandbox Code Playgroud)

我想打印第 3 列 >= 120 和第 2 列 >= 420 的所有行

通过在数字周围使用和不使用“”,我得到了两种不同的结果。

(A) awk '$3>=120 && $2>=420 {print $0}'

(B) awk '$3>="120" && $2>="420" {print $0}'
Run Code Online (Sandbox Code Playgroud)

(A) 部分的结果,这似乎是我想要的:

GTGTCATTTCATGCCTCATTCATCCTCATT  1375    439
TGAATTCTATTACTTGATTGACATTGACAG  541     301
TCTTTGGCGGTTGTTAAAGAATTTTCTGAT  823     203 …
Run Code Online (Sandbox Code Playgroud)

awk

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

打印值至少比同一列中上下 3 个步骤的值大 2 倍

我有一个清单

2
2
2
3
2
2
2
4
2
2
2
Run Code Online (Sandbox Code Playgroud)

我想打印至少比同一列中上下 3 个步骤的值大 2 倍的值。

输出应该是

4
Run Code Online (Sandbox Code Playgroud)

怎么做?我在这里一个类似的问题,只是为了更好地说明我写在这里,谢谢。

20171006 更新:抱歉过度简化了我的实际输入文件,它实际上是一个表格而不是我需要在多列(第 2、3、4 列等)中选择并打印出第 1 列的列表。我如何合并该列此类脚本中的信息?

A 2 2 2
B 2 2 2
C 2 2 2
D 3 3 3
E 2 2 2
F 2 2 2
G 2 2 2
H 4 4 4
I 2 2 2 
J 2 2 2 
K 2 2 2 
Run Code Online (Sandbox Code Playgroud)

并得到

H
Run Code Online (Sandbox Code Playgroud)

awk

4
推荐指数
2
解决办法
811
查看次数

在awk中选择两组条件

我有一张桌子

1 1
1 0
0 1
0 0
Run Code Online (Sandbox Code Playgroud)

我想用OR分隔的两组选择标准打印行。

标准集 1 :(第 1 列 >= 1 和第 2 列 = 0)

或者

标准集 2 :(第 1 列 = 0 和第 2 列 >= 1)

预期输出是

1 0
0 1
Run Code Online (Sandbox Code Playgroud)

我写过这样的东西,但没有用

awk '($1>=1 && $2=0)||($1=0 && $2>=1) {print $0}'
Run Code Online (Sandbox Code Playgroud)

有什么问题?

awk

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

在 Linux 中对巨大的列表 (130Gb) 进行排序

我正在尝试sort在 Linux 中创建一个巨大的列表(130 Gb)。部分是这样的:

@K00188:14:H2LMFBBXX:6:1101:27440:1668 1:N:0:0_I_CGATGT
@K00188:14:H2LMFBBXX:6:1101:30262:1668 1:N:0:0_I_CGATGT
@K00188:14:H2LMFBBXX:6:1101:6501:1686 1:N:0:0_I_CGATGT
@K00188:14:H2LMFBBXX:6:1101:18133:1686 1:N:0:0_I_CGATGT
@K00188:14:H2LMFBBXX:6:1101:21827:1686 1:N:0:0_I_CGATGT
Run Code Online (Sandbox Code Playgroud)

问题是在sort.

以前的问题有一些解决方案(例如sort --parallel,python 脚本等),但它们在我手上没有解决。

我想坚持,sort但在使用该选项时出现以下错误消息--parallel

sort: unrecognized option '--parallel=2'
Try `sort --help' for more information.
Run Code Online (Sandbox Code Playgroud)

如果有一些用于排序大列表的python脚本,我想尝试一下。

你有什么建议吗?

sort

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

提取行在Linux中连续出现3次以上

我在 Linux 中有一张桌子:

A 0
A 0
A 0
B 0
B 1
B 0
B 1
B 0
Run Code Online (Sandbox Code Playgroud)

我想提取连续出现 3 次或更多的行。

我的预期输出是:

A 0
Run Code Online (Sandbox Code Playgroud)

实际上,3 次或更多只是一个简化的例子。实际情况是我想提取连续出现30次以上的行。

任何的想法?

谢谢!

linux awk text-processing table

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

将列中相邻值之间的差异打印到新列

我有一个文件

A 1
A 2
A 4
A 6
Run Code Online (Sandbox Code Playgroud)

我想将第 2 列中相邻值(下方)之间的差异打印到新的第 3 列,以得到这个

A 1
A 2 1
A 4 2
A 6 2
Run Code Online (Sandbox Code Playgroud)

在 SO 上发现了类似的内容,但未能将其打印为新列。

awk 'NR>1{print $1-p} {p=$1}' file
Run Code Online (Sandbox Code Playgroud)

awk

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

标签 统计

awk ×5

linux ×1

sort ×1

table ×1

text-processing ×1