小编Dav*_*ter的帖子

加速文本处理

我有以下脚本来处理包含一些数据的文件:首先,将标题打印到输出文件中。然后从输入中随机选取 60000 行并打印到输出(明确需要多次打印同一行的可能性)。

N = 60000
gawk '{if (NR < 37) print $0}' input > output
MAX=$(gawk 'END{print NR}' input)

for ((i=1; i<=$N; i++ ))
do

   declare $(gawk -v min=37 -v max=$MAX -v seed=$RANDOM 'BEGIN{srand(seed); print "x="int(min+rand()*(max-min+1))}')
   gawk -v l=$x 'NR>36 && NR==l {print $0}' input >> output

done
Run Code Online (Sandbox Code Playgroud)

我现在认为这是非常低效的,所以我对如何提高此代码的性能持开放态度,也许可以防止一直打开和关闭输入文件?

感谢您的时间!

awk text-processing gawk

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

读取单词中的特定字符串时运行命令(例如开始新行)

当脚本读取文本文件时,我希望此代码在特定变量中找到特定字符串时运行特定命令。

例子:

假设我想使用以下代码来读取命令的输出last

#!/bin/bash
for i in `last`; do 
  sleep 0.1 | echo -ne "$i " 
done
Run Code Online (Sandbox Code Playgroud)

该命令的输出last是一个条目列表形式的表格,例如:

#!/bin/bash
for i in `last`; do 
  sleep 0.1 | echo -ne "$i " 
done
Run Code Online (Sandbox Code Playgroud)
  1. i前面代码中的变量可以是前面表格中的任何短语。我想应用一个特定的命令,例如当代码在变量中找到特定字符串时开始新行i,例如当变量i包含一个右括号时,)我希望代码开始一个新行。

  2. 当代码完成读取命令的输出时last,我希望代码再次(多次)重复for循环以读取是否有任何新更新。如何指示代码再次重新运行?例如,是否有这样的命令goto会强制代码转到特定行?

请你给点建议?

bash text-processing

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

获取匹配的 fasta 文件

list.txt

58759__len__2903
58759__len__2903
673957__len__1655
673957__len__1655
3566454__len__1744
Run Code Online (Sandbox Code Playgroud)

seq.fasta

>58759__len__2903
TTTTCCGTAGAGGAGATCCCTATTTTTAGGTTTGTAAGAGATCATTTT
>67777__len__2978
TTTTTAGGTTTGTAAGACCGTAGAG
>673957__len__1655
CCCTATTTTTAGGTTTGTAAGGTTTGTAAGACCGTAGAG
>3566454__len__1744
GGTTTGTAAGACCGTAGAGGGTTTGTAAGACCGTAGAG
Run Code Online (Sandbox Code Playgroud)

output.fasta

>58759__len__2903
TTTTCCGTAGAGGAGATCCCTATTTTTAGGTTTGTAAGAGATCATTTT
>673957__len__1655
CCCTATTTTTAGGTTTGTAAGGTTTGTAAGACCGTAGAG
>3566454__len__1744
GGTTTGTAAGACCGTAGAGGGTTTGTAAGACCGTAGAG
Run Code Online (Sandbox Code Playgroud)

匹配行list.txt(如果重复行,仅使用唯一行)到seq.fastaFASTA 文件并提取输出文件中所示的文件。

awk bioinformatics

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

为什么某些命令在使用 FTP 连接到服务器时不起作用?

我登录到 Linux 服务器并用于ftp placeftp.thing.com连接到不同的服务器。

我收到下面的消息,现在我可以将文件传输到该服务器,但是基本的 Unix 命令echo $SHELL不起作用。是因为我处于二进制传输模式还是仅仅因为 FTP 连接?

Connected to placeftp.thing.com (12.10.115.175).
220 You are connected to PLACEFTP.THING.COM.
331 User name okay, need password.
230 User logged in, proceed.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> echo $SHELL
?Invalid command
Run Code Online (Sandbox Code Playgroud)

我可能会错误地问我的问题,但我对 FTP 连接有什么误解?

ftp

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

如何连接两个 Linux 命令的结果

有没有一种简单的方法可以将两个 Linux 命令的结果连接在一行中(即,不使用变量)?

我从附近的气象站提取当地室外温度。今天的结果是:

5.2
Run Code Online (Sandbox Code Playgroud)

我只想添加单位,所以结果应该是这样的:

5.2°C
Run Code Online (Sandbox Code Playgroud)

一个示例命令,几乎给了我我想要的东西:

wget -q -O- "http://meteocentre.com/montreal/home_e.html" | grep -oP '(?<=Tn= ).*(?=&deg)' ; printf "°C\n"
Run Code Online (Sandbox Code Playgroud)

grep bash sed awk tr

2
推荐指数
3
解决办法
2436
查看次数

只替换一行中第一次出现的字符

我有一条包含数千行的行,如下所示:

{"100K";"0.00001";"10";"0.01"]}
{"101K";"0.0001";"100";"0.1"]}
{"102K";"1";"1000";"1"]}
{"102K";"1";"1000";"1"]}
{"103K";"0.01";"10000";"10"]}
{"104K";"0.1";"100000";"100"]}
{"105K";"1";"1000000";"1000"]}
{"109K";"0.000001";"1";"1"]}
{"120K";"0.000012";"12";"12"]}
Run Code Online (Sandbox Code Playgroud)

我想;:[

使这些线等于

{"100K":["0.00001";"10";"0.01"]}
{"101K":["0.0001";"100";"0.1"]}
{"102K":["1";"1000";"1"]}
{"102K":["1";"1000";"1"]}
{"103K":["0.01";"10000";"10"]}
{"104K":["0.1";"100000";"100"]}
{"105K":["1";"1000000";"1000"]}
{"109K":["0.000001";"1";"1"]}
{"120K":["0.000012";"12";"12"]}
Run Code Online (Sandbox Code Playgroud)

我如何使用 sed 或其他 unix 命令来做到这一点?

sed awk text-processing

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

使用 bash 缩小文件中的文本

我的文本文件如下所示:

If you are a software developer in your 20s or 30s, you've grown up in a world dominated by Linux. It has been a significant player in the data center for decades, and while it's hard to find definitive operating system market share reports, Linux's share of data center operating systems could be as high as 70%, with Windows variants carrying nearly all the remaining percentage. Developers using any major public cloud can expect the target system will run …
Run Code Online (Sandbox Code Playgroud)

bash text-processing

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

标签 统计

awk ×4

text-processing ×4

bash ×3

sed ×2

bioinformatics ×1

ftp ×1

gawk ×1

grep ×1

tr ×1