相关疑难解决方法(0)

如何从Unix上的文本文件中提取预定范围的行?

我有一个~23000行的SQL转储包含几个数据库的数据.我需要提取此文件的某个部分(即单个数据库的数据)并将其放在一个新文件中.我知道我想要的数据的起始行和结束行号.

有没有人知道一个Unix命令(或一系列命令)从第16224和16482行之间的文件中提取所有行,然后将它们重定向到一个新文件?

unix command-line text-processing sed

505
推荐指数
11
解决办法
46万
查看次数

Shell/Bash命令获取STDOUT的第n行

是否有任何bash命令可以让你获得STDOUT的第n行?

也就是说,会采取这种做法

$ ls -l
-rw-r--r--@ 1 root  wheel my.txt
-rw-r--r--@ 1 root  wheel files.txt
-rw-r--r--@ 1 root  wheel here.txt
Run Code Online (Sandbox Code Playgroud)

并做一些类似的事情

$ ls -l | magic-command 2
-rw-r--r--@ 1 root  wheel files.txt
Run Code Online (Sandbox Code Playgroud)

我知道在编写要重用的脚本时这是不好的做法,但是当我每天使用shell时,能够以这种方式过滤我的STDOUT对我来说是有用的.

我也意识到这将是半简单的命令写入(缓冲区STDOUT,返回一个特定的行),但我想知道是否有一些标准的 shell命令来执行此操作,而无需我将脚本放到位.

bash shell stdout sed

194
推荐指数
8
解决办法
15万
查看次数

从文件中读取异步I/O.

我最近得到了多个项目的想法,都涉及从文件中读取IP地址.由于它们都应该能够处理大量主机,因此我尝试实现多线程或创建套接字池并从中选择() - 以实现某种形式的并发以获得更好的性能.在多个场合,从文件中读取似乎是提高性能的瓶颈.我理解它的方式,从具有fgets或类似的文件读取是一个同步,阻塞操作.因此,即使我成功实现了异步连接到多个主机的客户端,操作仍然是同步的,因为我一次只能从文件中读取一个地址.

    /* partially pseudo code */

/* getaddrinfo() stuff here */

while(fgets(ip, sizeof(ip), file) {
FD_ZERO(&readfds);
/* create n sockets here in a for loop */
for (i = 0; i < socket_num; i++) {
    if (newfd > fd[i]) newfd = fd[i];
    FD_SET(fd[i], &readfds);
}

/* here's where I think I should connect n sockets to n addresses from file
 * but I'm only getting one IP at a time from file, so I'm not sure how to …
Run Code Online (Sandbox Code Playgroud)

c multithreading pthreads

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

标签 统计

sed ×2

bash ×1

c ×1

command-line ×1

multithreading ×1

pthreads ×1

shell ×1

stdout ×1

text-processing ×1

unix ×1