Questions tagged «head»

用于head命令的问题,该命令输出文件的前x个字节或行数

6
在大型文件中将猫的第X行移到第Y行
说我有一个巨大的文本文件(> 2GB),我只是想cat行X至Y(如57890000至57890010)。 据我了解,我可以通过管道做head成tail或反之亦然,即 head -A /path/to/file | tail -B 或者 tail -C /path/to/file | head -D 其中A,B,C并D可以从文件中的行数来计算,X和Y。 但是这种方法有两个问题: 你必须计算A,B,C和D。 该命令会pipe彼此有更多比我有兴趣阅读(例如,如果我在一个巨大的文件中间读短短的几行)线 有没有一种方法可以让Shell正常工作并输出所需的行?(同时仅提供X和Y)?
132 tail  cat  large-files  head 


9
显示文件的前几行和后几​​行的命令
我有一个包含很多行的文件,每行的开头都有一个时间戳,例如 [Thread-3] (21/09/12 06:17:38:672) logged message from code..... 因此,我经常检查此日志文件中的2件事。 还给出了具有全局条件和开始时间的前几行。 最后几行具有退出状态以及其他一些信息。 是否有任何方便的单个命令可以让我仅显示文件的前几行和后几​​行?

1
在bash中以空分隔输入如何执行“ head”和“ tail”?
find命令可以将文件名输出为以空分隔的字符串(如果-print0提供),并且xargs可以在-0打开选项的情况下使用它们。但是在两者之间,很难对文件进行操作的该集合- sort命令有-z开关,这使得它可能对这些文件进行排序,但head并tail没有他们。 我该怎么做head,并tail在一个方便的方式与空分隔的投入?(我总是可以创建一个简短的红宝石脚本,但我希望有更好的方法)

3
头吃多余的字符
预期以下shell命令仅输出输入流的奇数行: echo -e "aaa\nbbb\nccc\nddd\n" | (while true; do head -n 1; head -n 1 >/dev/null; done) 但是,它只是打印第一行:aaa。 与-c(--bytes)选项一起使用时不会发生相同的事情: echo 12345678901234567890 | (while true; do head -c 5; head -c 5 >/dev/null; done) 该命令1234512345按预期输出。但这仅在该实用程序的coreutils实现中有效head。该busybox的执行还是吃多余的字符,所以输出正好12345。 我想这种特定的实现方式是出于优化目的而完成的。您不知道行的结尾,因此不知道需要读取多少个字符。不消耗输入流中多余字符的唯一方法是逐字节读取流。但是一次从流中读取一个字节可能很慢。因此,我想head将输入流读取到足够大的缓冲区中,然后计算该缓冲区中的行数。 --bytes使用option 时无法说相同的话。在这种情况下,您知道需要读取多少个字节。因此,您可以准确地读取此字节数,但不能超过此数目。该corelibs实现使用这个机会,但是busybox的一个没有,它仍然比读取所需到缓冲区的字节以上。这样做可能是为了简化实现。 所以这个问题。head实用程序从输入流中消耗比要求更多的字符是否正确?Unix实用程序是否有某种标准?如果存在,是否指定了这种行为? 聚苯乙烯 您必须按Ctrl+C停止上面的命令。Unix实用程序不会在超越时失败EOF。如果您不想按,则可以使用更复杂的命令: echo 12345678901234567890 | (while true; do head -c 5; head -c …

3
我如何在bash中使用二进制文件来逐字复制字节而不进行任何转换?
由于种种原因,我正在雄心勃勃地尝试将c ++代码转换为bash。 这段代码读取和处理特定于我的子字段的文件类型,该文件类型完全以二进制形式编写和结构化。我的第一个与二进制相关的任务是按原样复制标头的前988个字节,并将它们放入一个输出文件中,在生成其余信息时,我可以继续写这些输出文件。 我非常确定我当前的解决方案无法正常工作,实际上我还没有找到确定此问题的好方法。因此,即使它实际上写得正确,我也必须知道如何测试才能确定! 这就是我现在正在做的: hdr_988=`head -c 988 ${inputFile}` echo -n "${hdr_988}" > ${output_hdr} headInput=`head -c 988 ${inputTrack} | hexdump` headOutput=`head -c 988 ${output_hdr} | hexdump` if [ "${headInput}" != "${headOutput}" ]; then echo "output header was not written properly. exiting. please troubleshoot."; exit 1; fi 如果我使用hexdump / xxd检出文件的这一部分,尽管我无法完全读取其中的大部分内容,但似乎有些问题。我编写的用于比较的代码仅告诉我两个字符串是否相同,而不告诉我是否按照我希望的方式复制它们。 有更好的方法来执行此操作吗?我可以简单地复制/读取本机二进制文件中的二进制字节以逐字复制到文件中吗?(最好也存储为变量)。
14 bash  binary  head 

3
头/尾的负参数
这个问题的变体当然已经在不同的地方被问过几次了,但是我试图M从文件中删除最后几行而没有运气。 在第二个最投票的答案在这个问题建议做以下摆脱在文件的最后一行: head -n -1 foo.txt > temp.txt 但是,当我在OSX和Zsh中尝试该操作时,我得到: head: illegal line count -- -1 这是为什么?我如何删除M 最后一个行和在第一个 N给定文件的行?

1
替代不退出的“头”?
我需要一个实用程序,该实用程序将打印前n行,但随后继续运行,吸收其余行,但不打印它们。我用它来使终端不被需要继续运行的进程的输出所淹没(它将结果写入文件)。 我想我可以做process | {head -n 100; cat > /dev/null},但是还有什么更优雅的选择吗?
13 head 

2
命令删除输入中的前N行
背景 我正在运行SSH服务器,并且要删除此用户。我无法删除此用户,因为他当前正在运行一些我首先需要杀死的进程。 这是我当前正在使用的管道,以找出我当前正在使用的用户的所有进程ID: ps -u user | awk '{print $1;}' 输出看起来像这样: PID 2121 2122 2124 2125 2369 2370 我想用它kill -9杀死所有进程,所以我可以这样删除这个愚蠢的用户: ps -u user | awk '{print $1;}' | sudo xargs kill -9 但这由于PID标题而无法正常工作: kill: failed to parse argument: 'PID' 问题 我认为必须有一个简单的Unix命令才能删除输入的第一行。 我知道我可以使用tail它,但是我不想计算输入中包含多少行来准确地确定要显示的行数。 我正在寻找类似head或tail反转的内容(而不是仅显示流的第一部分/最后一部分,而是显示流的开始/结束以外的所有内容)。 注意 我设法通过简单地| grep [[:digit:]]在awk命令后添加来解决此问题,但是我仍在寻找删除文件第一行的方法,因为我认为在其他情况下这将非常有用。
11 command-line  sed  awk  tail  head 

3
比较bash中两个文件的头
我可以diff filea fileb看到文件之间的区别。我也head -1 filea可以看到filea或fileb的第一行。如何合并这些命令以显示filea第一行和fileb第一行之间的区别?
11 bash  shell  diff  head 

5
使用头和尾抓取不同的行集并保存到同一文件中
这是用于作业的,但我不会问具体的作业问题。 我需要使用头和尾从一个文件中抓取不同的行集。因此,像第6-11行和第19-24行一样,将它们都保存到另一个文件中。我知道我可以使用诸如 head -11 file|tail -6 > file1; head -24 file| tail -6 >> file1. 但是我不认为我们应该这样做。 我可以组合头命令和尾命令然后保存到文件中吗?
10 tail  head 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.