小编jac*_*ack的帖子

解压缩 .gz 文件而不删除 gzipped 文件

我有一个文件file.gz,当我尝试使用 解压缩该文件时gunzip file.gz,它解压缩了该文件,但仅包含已提取并删除的file.gz文件。

如何通过保留解压缩文件和压缩文件来解压缩?

command-line gzip files gunzip

218
推荐指数
2
解决办法
84万
查看次数

用零替换缺失值空格

我有大约 30K 行的 input.txt 制表符分隔的文本文件,我想检查每一行(s1..s30K 行)的缺失值(即空格)并用零值填充缺失值。See out.txt

输入文件

 id  no1  no2  no3  no4
 s1  23   34   45   12
 s2       4    4      
 s3  4         8    0
Run Code Online (Sandbox Code Playgroud)

输出.txt

id  no1  no2  no3  no4
s1  23   34   45   12
s2  0     4    4    0  
s3  4     0    8    0
Run Code Online (Sandbox Code Playgroud)

sed awk perl text-processing

13
推荐指数
2
解决办法
2万
查看次数

包含括号的文件名错误

当我尝试将文件名从 更改old.file(1).gz为 时new.file.gz,它说语法错误,我使用的是 ubuntu 12.04。

mv old.file(1).gz new.file.gz
bash: syntax error near unexpected token `('
Run Code Online (Sandbox Code Playgroud)

shell bash quoting

12
推荐指数
2
解决办法
5万
查看次数

用匹配的列连接两个文件

文件1.txt

    id                            No
    gi|371443199|gb|JH556661.1| 7907290
    gi|371443198|gb|JH556662.1| 7573913
    gi|371443197|gb|JH556663.1| 7384412
    gi|371440577|gb|JH559283.1| 6931777
Run Code Online (Sandbox Code Playgroud)

文件2.txt

 id                              P       R       S
 gi|367088741|gb|AGAJ01056324.1| 5       5       0
 gi|371443198|gb|JH556662.1|     2       2       0
 gi|367090281|gb|AGAJ01054784.1| 4       4       0
 gi|371440577|gb|JH559283.1|     21      19      2
Run Code Online (Sandbox Code Playgroud)

输出.txt

 id                              P       R       S  NO
 gi|371443198|gb|JH556662.1|     2       2       0  7573913
 gi|371440577|gb|JH559283.1|     21      19      2  6931777
Run Code Online (Sandbox Code Playgroud)

File1.txt 有两列,File2.txt 有四列。我想加入两个具有唯一 id 的文件(array[1] 应该在两个文件(file1.txt 和 file2.txt)中匹配,并只给出匹配的 id(参见 output.txt)。

我试过了join -v <(sort file1.txt) <(sort file2.txt)。请求任何有关 awk 或 join 命令的帮助。

awk join

11
推荐指数
2
解决办法
5万
查看次数

将制表符分隔的文件转换为使用换行符

input.txt(大约 30K 行)

RT|367079254|bn|ERTS01065811.1| 38 1 503
RT|367079251|bn|ERTS01065814.1| 56 3 502
RT|367079248|bn|ERTS01065817.1| 52 2 502
Run Code Online (Sandbox Code Playgroud)

输出.txt

RT|367079254|bn|ERTS01065811.1|
38
1
503
RT|367079251|bn|ERTS01065814.1|
56
3
502
RT|367079248|bn|ERTS01065817.1|
52
2
502
Run Code Online (Sandbox Code Playgroud)

text-processing

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

如何在awk中将两列相乘?

我想在输入文件中将第 1 列与第 2 列(直到文件结束)相乘,并且应该在单独的文件中输出 1 列并乘以 3 列。

输入.txt:

1 677679866
2 121867616
3 49413198
4 40415982
Run Code Online (Sandbox Code Playgroud)

输出.txt:

1 677679866
2 243735232
3 148239594
4 161663928
Run Code Online (Sandbox Code Playgroud)

awk text-processing

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

awk-打印没有换行的列值并添加逗号

输入文件

 EN1
 EN2
 EN3
 EN4
 EN5
Run Code Online (Sandbox Code Playgroud)

输出

EN1,EN2,EN3,EN4,EN5
Run Code Online (Sandbox Code Playgroud)

我试过 awk。但它不是用逗号打印

awk 'BEGIN { OFS = ","} { printf $1}' input.txt
Run Code Online (Sandbox Code Playgroud)

我有 GNU Awk 4.0.0 版本

awk text-processing

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

具有相同第一列的平均行

给定一个包含两列的文件:

Id  ht
510 69
510 67
510 65
510 62
510 59
601 29
601 26
601 21
601 20
Run Code Online (Sandbox Code Playgroud)

我需要一种方法将具有相同 ID 的所有行合并为具有平均高度的行。在这种情况下,(69 + 67 + 65 + 62 + 59) / 5 = 64 和 (29 + 26 + 21 + 20) / 4 = 24,所以输出应该是:

Id  Avg.ht
 510 64
 601 24
Run Code Online (Sandbox Code Playgroud)

我如何使用 sed/awk/perl 做到这一点?

awk perl text-processing

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

比较两个文件列

我有带有空格分隔字段的长文本文件:

cat file1.txt
Id    leng  sal   mon
25671 34343 56565 5565
44888 56565 45554 6868
23343 23423 26226 6224
77765 88688 87464 6848
66776 23343 63463 4534

cat file2.txt
Id    number
25671 34343 
76767 34234 
23343 23423 
66776 23343 

cat output.txt
Id    leng  sal   mon
44888 56565 45554 6868
77765 88688 87464 6848
Run Code Online (Sandbox Code Playgroud)

file1.txt有四列,file2.txt有两列。我想比较$1两个文件 ( file1.txt, file2.txt) 中的第一列 ( )并输出在file2.txt.

我试过了

join -v1 file1.txt file2.txt >output.txt
Run Code Online (Sandbox Code Playgroud)

但是输出有一些错误。任何awk/sed命令表示赞赏。

sed awk perl join

6
推荐指数
2
解决办法
2万
查看次数

列不匹配和替换

input.txt(制表符分隔)

TTTTOTTT00000000008  RTTTT899      5.00E-28
TTTTOTTT00000000046  RTTTWRR       3.00E-31
TTTTOTTT00000000051  2.00E-11
TTTTOTTT00000000051  7.00E-12
TTTTOTTT00000000054  5.00E-22
TTTTOTTT00000000061  YTRYR         1.00E-11
TTTTOTTT00000000078  ETNRR8        6.00E-17
TTTTOTTT00000000174  TYTYT         1.00E-11
TTTTOTTT00000000203  UUUE          9.00E-20
Run Code Online (Sandbox Code Playgroud)

我的文件与列混合在一起。在这个文件(input.txt)中。第 3 列有空格,列应填充第 2 行,第 2 列应替换为无

output.txt(制表符分隔)

TTTTOTTT00000000008  RTTTT899      5.00E-28
TTTTOTTT00000000046  RTTTWRR       3.00E-31
TTTTOTTT00000000051  none          2.00E-11
TTTTOTTT00000000051  none          7.00E-12
TTTTOTTT00000000054  none          5.00E-22
TTTTOTTT00000000061  YTRYR         1.00E-11
TTTTOTTT00000000078  ETNRR8        6.00E-17
TTTTOTTT00000000174  TYTYT         1.00E-11
TTTTOTTT00000000203  UUUE          9.00E-20
Run Code Online (Sandbox Code Playgroud)

sed awk perl text-processing columns

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

标签 统计

awk ×7

text-processing ×6

perl ×4

sed ×3

join ×2

bash ×1

columns ×1

command-line ×1

files ×1

gunzip ×1

gzip ×1

quoting ×1

shell ×1