【问题标题】:Using combination of "head" and "tail" to display middle line of the file in Unix在Unix中使用“head”和“tail”的组合显示文件的中间行
【发布时间】:2011-12-19 18:45:33
【问题描述】:

如果我有一个包含 3 行文本的文件名 myownfile.txt

foo
hello world
bar

我想仅使用headtail 命令在中间显示hello world 行。

【问题讨论】:

  • 文件超过3行怎么办???

标签: unix tail unix-head


【解决方案1】:
head -2 myownfile | tail -1 

应该做你想做的事

【讨论】:

  • 谢谢它确实有效!关于head说-2意味着从第2行开始的部分,你能稍微解释一下吗?和 tail -1 也从底部的第 2 行开始?
  • head -2 获取文件的前 行。此输出通过管道传输到 tail -1,它获取 管道输出 的最后 one 行(这可能位于文件中间的某个位置)。
【解决方案2】:

head -2 显示文件的前两行

$ head -2 myownfile.txt
foo
hello world

tail -1 显示文件的最后一行:

$ head -2 myownfile.txt | tail -1
hello world

【讨论】:

    【解决方案3】:

    我在这里聚会有点晚了,但更灵活的方法是使用 awk 而不是使用 head 和 tail。

    您的命令如下所示:

    awk 'NR==2' myfile.txt
    

    你好世界

    【讨论】:

      【解决方案4】:

      试试head -2 | tail -1。这是前半部分的最后一行 (tail -1) + 一个 (head -2)。

      【讨论】:

      • 感谢您的解释,它对我有很大帮助
      【解决方案5】:

      tail -2 myownfile.txt|head -1

      它将显示第二行。

      【讨论】:

        【解决方案6】:

        过去曾发生过一些情况,有人通过sed 为某些文件处理问题提供了大胆的解决方案。我从来没有真正理解它们是如何工作的。

        今天我不得不使用基本工具对大文件进行一些行编辑,并遇到了这个问题。不满意tailhead 的组合我决定了解sed 的真正力量。

        阅读https://www.grymoire.com/Unix/Sed.html 为我提供了我需要的所有信息。因此,我想与其他可能偶然发现类似问题但不知道sed 真正强大功能的人分享:

        sed -n "2 p" myownfile.txt
        

        -n 选项禁用所有隐式打印,2 仅寻址第二行,p 将该特定行打印到标准输出。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-01-30
          • 1970-01-01
          • 2018-06-27
          • 1970-01-01
          • 2018-07-03
          • 1970-01-01
          • 2019-12-18
          • 1970-01-01
          相关资源
          最近更新 更多