我有一个~23000行的SQL转储包含几个数据库的数据.我需要提取此文件的某个部分(即单个数据库的数据)并将其放在一个新文件中.我知道我想要的数据的起始行和结束行号.
有没有人知道一个Unix命令(或一系列命令)从第16224和16482行之间的文件中提取所有行,然后将它们重定向到一个新文件?
是否有任何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命令来执行此操作,而无需我将脚本放到位.
我最近得到了多个项目的想法,都涉及从文件中读取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)