标准cat逐行连接文件(逐行,如果你愿意的话)。我发现自己最近越来越需要水平 cat命令;即一个命令,它接受一个文件列表并将它们水平连接起来,逐列。到目前为止,我已经使用了临时解决方法,但我想知道是否存在一个很好的解决方案。
为了澄清,请考虑以下两个文件之间cat和hcat的比较:
$ cat a.dat 1.dat
a b
c d
1 2
3 4
$ hcat -s ' ' a.dat 1.dat
a b 1 2
c d 3 4
Run Code Online (Sandbox Code Playgroud)
(与cat我们需要指定分隔符不同,因为按照惯例,UNIX 文件的末尾没有列分隔符。)
我得到的:
host:~ user$ cat example.txt
some texthost:~ stas$
Run Code Online (Sandbox Code Playgroud)
我想得到什么:
host:~ user$ cat example.txt
some text
host:~ stas$
Run Code Online (Sandbox Code Playgroud)
有没有办法让我的cat行为像这样?
我在 Mac OS X 上使用 bash。
很多时候,当手动搜索文件时,有太多的评论让您眼花缭乱,您开始希望有一种方法可以让您只显示那些没有评论的行。
有没有办法用 cat 或其他工具跳过评论?我猜有一种方法,它涉及一个正则表达式。我希望它只是显示而不是实际删除任何行等。
注释采用# 形式,我使用 zsh 作为我的 xterm。
我有一个包含多行的文件,每一行的开头都有一个时间戳,例如
[Thread-3] (21/09/12 06:17:38:672) logged message from code.....
Run Code Online (Sandbox Code Playgroud)
所以,我经常从这个日志文件中检查两件事。
是否有任何快速方便的单个命令可以让我只显示文件的前几行和最后几行?
我有大约 15,000 个名为file_1.pdb、file_2.pdb等的文件。我可以通过执行以下操作来按顺序对其中的几千个文件进行分类:
cat file_{1..2000}.pdb >> file_all.pdb
Run Code Online (Sandbox Code Playgroud)
但是,如果我对 15,000 个文件执行此操作,则会出现错误
-bash: /bin/cat: Argument list too long
Run Code Online (Sandbox Code Playgroud)
我已经看到通过这样做解决了这个问题,find . -name xx -exec xx但这不会保留文件加入的顺序。我怎样才能做到这一点?
这两个命令在如何将文件清零方面有什么不同吗?后者是做前者的更短的方法吗?幕后发生了什么?
两个都
$ cat /dev/null > file.txt
$ > file.txt
Run Code Online (Sandbox Code Playgroud)
屈服
-rw-r--r-- 1 user wheel 0 May 18 10:33 file.txt
Run Code Online (Sandbox Code Playgroud) 我有一个应用程序记录到纯文本日志文件 (myapp.log),但它似乎没有在每个日志条目的末尾写入换行符。如果我执行一个命令,就像tail -n 50 myapp.log我实际上收到数百“行”文本(日志条目)一样。
这个日志文件非常大,大约1GB,谁知道最后一次CR和/或LF是多久之前插入的。我怎么能抓住说,最后 2MBs 例如?
如果我做
$ cat > file.txt
Run Code Online (Sandbox Code Playgroud)
文本Ctrl- DCtrl-D
问题 1:如果我不按 Enter,为什么我必须按Ctrl-D两次?
如果我做
$ cat > file.txt
Run Code Online (Sandbox Code Playgroud)
pa bam pshhh Ctrl-Z
[2]+ Stopped cat > file.txt
$ cat file.txt
$ cat > file.txt
Run Code Online (Sandbox Code Playgroud)
pa bam pshhh
Ctrl——Z
[2]+ Stopped cat > file.txt
$ cat file.txt
pa bam pshhh
Run Code Online (Sandbox Code Playgroud)
为什么第二次是 1 行的文件?
我在一个目录中有 1000 个 csv 文件。我想按顺序将它们连接在一起。它们被命名为 img_size_1.csv 到大约 img_size_1000.csv 这个答案很接近但假设一个列表文件。这可以在单线中完成吗?
以下两个命令都尝试打开一个不存在的文件foo,但错误信息略有不同。可能是什么原因?
$ cat foo
cat: cannot open foo
$ cat < foo
-bash: foo: No such file or directory
Run Code Online (Sandbox Code Playgroud)