我想在命令行上显示文本文件的内容。该文件仅包含 5-6 个字符。是否有捷径可寻?
说我有一个巨大的文本文件(> 2GB),我只是想cat行X至Y(如57890000至57890010)。
据我所知,我可以通过管道head输入tail或反之亦然来做到这一点,即
head -A /path/to/file | tail -B
Run Code Online (Sandbox Code Playgroud)
或者
tail -C /path/to/file | head -D
Run Code Online (Sandbox Code Playgroud)
其中A、B、C和D可以根据文件中的行数计算得出,X和Y。
但是这种方法有两个问题:
A,B,C和D。pipe相互发送比我感兴趣的多得多的行(例如,如果我只读取大文件中间的几行)有没有办法让 shell 只使用并输出我想要的行?(同时仅提供X和Y)?
我最近意识到我们可以使用cat尽可能多的dd,而且它实际上比dd
我知道这dd在处理块大小实际上影响正确性而不仅仅是性能的磁带时很有用。然而,在这些日子里,是否存在dd可以做一些cat不能做的事情?(在这里,我认为不到 20% 的性能差异无关紧要。)
具体的例子会很好!
很多时候,我不小心cat在内容多达几千行的文件上运行了该命令。
我尝试cat用Ctrl+C或Ctrl+终止命令Z,但两者都只cat在终端中显示的总输出后生效,所以我必须等到cat完全执行。
有没有更好的解决方案来避免等待?因为有时文件的大小高达 100MB,等待它会很烦人。
我正在使用tcsh.
如果我使用cat -n text.txt自动编号行,那么我如何使用该命令仅显示某些编号的行。
假设我有一个脚本,我想通过管道传输到另一个命令或重定向到一个文件(sh示例中通过管道传输到该文件)。假设我正在使用 bash。
我可以使用echo:
echo "touch somefile
echo foo > somefile" | sh
Run Code Online (Sandbox Code Playgroud)
我也可以使用cat以下方法做几乎相同的事情:
cat << EOF
touch somefile
echo foo > somefile
EOF
Run Code Online (Sandbox Code Playgroud)
但是如果我用“EOF | sh”替换“EOF”,它只会认为它是heredoc的一部分。
我怎样才能使它cat从标准输入输出文本,然后将其通过管道传输到任意位置?
在处理日志文件时,由于某些原因,有些最终会成为 gzipped 文件,logrotate而有些则不会。所以当你尝试这样的事情时:
$ zcat *
Run Code Online (Sandbox Code Playgroud)
你最终得到一个命令行zcat xyz.log xyz.log.1 xyz.log.2.gz xyz.log.3.gz,然后是:
gzip: xyz.log: not in gzip format
Run Code Online (Sandbox Code Playgroud)
是否有一种工具可以使用魔术字节,类似于file工作原理,并使用zcat或cat取决于结果,以便我可以将输出传输到grep例如?
注意:我知道我可以编写脚本,但我想知道是否已经有工具了。
例如,我有一个文件(用 生成echo -e "var1\tvar2\t\var3\tvar4" > foo)输出为:
$ cat foo
case elems meshing nlsys
uniform 2350 0.076662 2.78
non-conformal 348 0.013332 0.55
scale 318 0.013333 0.44
smarter 504 0.016666 0.64
submodel 360 .009999 0.40
unstruct-quad 640 0.019999 0.80
unstruct-tri 1484 0.01 0.88
Run Code Online (Sandbox Code Playgroud)
我更喜欢这样的输出(这里我使用vim和:set tabstop=14):
case elems meshing nlsys
uniform 2350 0.076662 2.78
non-conformal 348 0.013332 0.55
scale 318 0.013333 0.44
smarter 504 0.016666 0.64
submodel 360 .009999 0.40
unstruct-quad 640 0.019999 0.80
unstruct-tri 1484 0.01 …Run Code Online (Sandbox Code Playgroud) 有时当我cat错误地输入二进制文件时,我的终端会出现乱码。没有什么是快速reset解决不了的,但理论上攻击者不能创建一个文件,当在终端上显示时,它会执行一些任意代码吗?通过终端模拟器中的漏洞利用或其他方式。
我是通过一个教程和锯同时使用的工作cat myfile.txt和cat < myfile.txt。这两个命令序列之间有区别吗?似乎都将文件的内容打印到 shell。