首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在shell程序里如何从文件中获取第n行

问: 有没有一种“规范”的方式来做到这一点?我一直在使用 head -n | tail -1,它可以做到这一点,但我一直想知道是否有一个Bash工具,专门从文件中提取一行(或一段行)。...所谓“规范”,我指的是一个主要功能就是这样做的程序。...答: 有一个可供测试的文件,内容如下: 使用 sed 命令,要打印第 20 行,可写为 sed -n '20'p file.txt sed -n '20p' file.txt 测试截图如下: 要打印第...8 到第 12 行,则可用命令 sed -n '8,12'p file.txt 如果要打印第8、9行和第12行,可用命令 sed -n '8p;9p;12p' file.txt 对于行数特大的文件...,为了提高处理速度,可采用类似如下命令 sed '5000000q;d' file.txt tail -n+5000000 file.txt | head -1 需要关注处理性能的伙伴可以在上述命令前加上

45920

漫画:如何找到链表的倒数第n个结点?

我们以下面这个链表为例: 给定链表的头结点,但并不知道链表的实际长度,要求我们找到链表的倒数第n个结点。 假设n=3,那么要寻找的结点就是元素1: 如何利用队列呢?...小灰的思路如下: 1.创建一个长度为n的队列,遍历原始链表,让结点逐一进入队列: 2.当队列已满时,让队尾元素出队,新结点入队: 3.当链表全部结点遍历完毕时,队尾的元素就是倒数第n个结点(因为队列长度是...n): 首先,我们创建两个指针P1和P2,P1指向链表的头结点,P2指向链表的正数第n个结点(也就是例子中的第3个结点): 接下来,我们让指针P1和P2同时循环右移,每次右移一步,直到指针P2移动到链表的末尾...: 此时,由于P2指向链表的尾结点,且P1和P2的距离是n-1,因此P1所指的结点就是我们要寻找的链表倒数第n个结点: 显然,这个方法从头到尾只需要对链表做一次遍历,而且仅仅使用了两个指针,算法的空间复杂度是...head; Node p2 = head; //把p2指针移动到正数第n个结点 for(int i=1; in; i++){ p2

83840
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    链表-如何高效删除链表的倒数第N个节点

    题目 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点 示例 给定一个链表: 1->2->3->4->5, 和 n = 2 当删除了倒数第二个节点后,链表变为 1->2->3->5 思考...= nil{ len++W temp1 = temp1.Next } //倒数第n个就等正数的第(len-n)+1个 m := len- n...,第二次用来找到要删除的倒数第n个元素,有没有更好的办法呢,只遍历一次?...解法二 解法一已经实现了我们想要的功能,我们回看上面的思考(只扫描一趟实现此功能),我们看这个问题的本质,倒数第n个就等正数的第(len-n)+1个,我们看下图: ?...分析上面的图声明三个变量,one,two两个指针变量,i是一个int变量,one和two指向链表的头节点,one开始遍历链表,每遍历一个节点,变量i进行加1,当变量i大于n时(就是倒数第n个,在这里n是

    1.3K30

    如何删除给定单向链表的倒数第N个元素

    如何删除给定单向链表的倒数第N个元素? 先分析下有哪些关键词: 1. 单向链表,那也就是我们只能单向遍历; 2....倒数第N个元素,只能先遍历到尾部,才知道倒数第N个元素是什么,但问题又出现了,是单向链表,不能反向遍历,那该如何解决呢? 3....删除,要想删除某一元素,是需要知道这个指定元素的前一元素才行,那我们其实要找到的倒数N+1个元素....以如下队列为例,如果要删除倒数第2个元素,就要找到倒数第3个元素,也就是倒数第N+1个元素,那改如何做呢? 首先一定需要一个指针遍历到队列尾部的,那怎么记录这个指针已经遍历过的元素呢?...两个指针按照同样的速度同时移动,当快指针到达结尾的时候,慢指针也就到达了倒数第N+1个元素的位置. 再细分下,如果要删除的目标元素正好和链表长度相同呢?

    67310

    删除链表的倒数第n个节点

    题目: 思路: 由于这是一个链表,所以我们一般只能获取到一个头结点,然而其他信息我们不确定。所以可以采用双指针的方法。...思路一,利用一个指针获取整个链表元素的总数,利用总数减去目标数,所以我们可以确定要删除的位置。...思路二,利用一个指针先走出目标数目,然后两个指针一起走,那么先走的指针走完时,第二个指针恰好会停在目标元素上。...OutPutLinkedList(result);     }     /**      * 方案2,用双指针,一个先走一定的步数,然后一起走,某一个先抵达就停止      *      * @param...+ 1;         //总数减去倒数的数n,就是要遍历的位置了         for (int i = 1; i < index - 1; i++) {             p2 = p2.

    40920

    「拥抱开源」我的第 N 个开源项目

    例如技术的迭代、逐渐不再维护(俗称的烂尾)等等。 所以,我对 GitHub 开源是非常关注,包括看其他神仙公司、或者程序员大佬们的开源项目。例如:Apache、Google、Alibaba 等等。...---- 起源 2020年是一个灾年。从上帝视角(精神与物质能量守恒定律)来看,当给关上一扇窗户的时候,那必然会打开新的一扇窗户。 那么当上帝给你关掉很多扇窗户的时候,你可以尝试砸开一堵墙 。...于是,在学习大佬的开源项目的时候,突然迸发出了想要自己开源项目的热情(绝对不是捡树枝太累导致的)。 ---- 现状 上周六提交了第一行代码。...今天(本周六),约定了 Commit Message 提交规范、thymeleaf 模版的配置与 demo。 由于只有周末才有时间进行添砖加瓦,所以第一个目标是完成核心三大板块:会员、商品、订单。...---- 小结 作为程序员,开源项目是必须要了解、参与进去的。(免费的东西,它不香吗?) 既然如此,那就主动的参与其中吧。

    46820

    问与答83: 如何从一行含有空值的区域中获取第n个数值?

    现在我想在单元格B3至F3中使用公式来获取分数,其中单元格B3中是G3:L3中的第1个分数值,即G3中的值45;C3中是第2个分数,即H3中的值44,依此类推。如何编写这个公式? ?...图1 (注:这也是在chandoo.org论坛上看到的一个案例,整理在此与大家分享。) A:使用INDEX/SMALL/IF函数组合来解决。...7,8,9,FALSE,11,12},1) 得到: 7 代入INDEX函数,得到: =INDEX($A$3:$L$3,7) 对于INDEX函数来说,如果省略其参数column_num,则直接取参数array中的第...row_num个元素,即G3中的值,结果为: 45 当公式向右拖时,COLUMN()-COLUMN($A$1)的值递增,这样会依次取数组{7,8,9,FALSE,11,12}中第2、3、4、5小的值,传递给...INDEX函数后分别取单元格H3、I3、K3、L3中的值。

    1.2K20

    函数递归与迭代附n的阶乘+顺序打印一个整数的每一位数+求第n个斐波那契数

    但是我们有了灵感,我们发现其实一个数字的最低位是最容易得到的,通过%10就能得到 那我们假设想写一个函数Print来打印n的每⼀位,如下表示: Print(n) 如果n是1234,那表⽰为 Print...事实上,我们看到的许多问题是以递归的形式进行解释的,这只是因为它比非递归的形式更加清晰,但是这些问题的迭代实现往往比递归实现效率更高,如计算第n个斐波那契数。...当⼀个问题非常复杂,难以使用迭代的方式实现时,此时递归实现的简洁性便可以补偿它所带来的运行时开销。...return 0; } 运行结果: 这里我们看到了,在计算第40个斐波那契数的时候,使用递归方式,第3个斐波那契数就被重复计算了39088169次,这些计算是非常冗余的。...所以斐波那契数的计算,使用递归是非常不明智的,我们就得想迭代的方式解决。 我们知道斐波那契数的前2个数都1,然后前2个数相加就是第3个数,那么我们从前往后,从小到大计算就行了。

    13110
    领券