我想完全按照unix“cat”做的事情,但是在我的电脑上。Windows 命令行是否有简单的等效命令?
具体来说,我想从文件夹中给定类型的所有文件创建一个文件
在 Unix 中:
cat *fna >all_fna_files.fna
Run Code Online (Sandbox Code Playgroud)
(将所有“.fna”文本文件合并为一个大文本文件)
从特定行(如 70000 之类的大数字)开始的文件输出的最佳方式是什么。就像是:
cat --line=70000 <file>
Run Code Online (Sandbox Code Playgroud) 当我通过管道传输多个 unix 命令(例如 grep、sed、tr 等)时。我倾向于指定正在使用 cat 处理的输入文件。所以像cat file | grep ... | awk ... | sed ....
但是最近在我的答案留下了一些评论表明这是 cat 的无用用法之后,我想我会在这里问这个问题。
我查了一下这个问题,看到了维基百科关于 UUOC和The Useless Use of Cat Award的文章,在我看来,提出的论点是从效率的角度来看的。
我在这里遇到的最接近的问题是这个:打电话给猫是浪费吗?——但这不是我要问的。
我猜 UUOC 阵营建议使用什么,cmd1 args < file | cmd2 args | cmd3 ..或者如果该命令具有从文件读取的选项,然后将文件作为参数传入。
但对我来说cat file | cmd1 ... | cmd2似乎更容易阅读和理解。我不必记住将输入文件发送到不同命令的不同方式,并且该过程逻辑上从左到右流动。首先输入,然后是第一个过程……依此类推。
我是否无法理解关于 cat 的无用使用的争论?我知道如果我正在运行一个每 2 秒运行一次并进行大量处理的 cron 作业,那么在这种情况下 cat 可能会很浪费。但除此之外,使用 cat 的普遍共识是什么?
我有一台用于文件服务器和其他东西的无头 linux mint 机器。几年来它对我来说一直很好用,但有一个问题 - 我的猫喜欢在它上面闲逛,当她爬上爬下时,她偶尔会踩到电源按钮并关闭机器。
是否有一种简单的方法可以更改电源按钮的行为,因此需要长时间按下(10 秒左右)或多次按下才能执行任何操作?
第二次调用 cat a 文件不会更新访问时间。我期望每次显示文件内容时都会更新访问时间。
如果我在 Web 浏览器中打开文件,我会看到相同的行为。它的访问时间不会持续更新。
我误解了访问时间吗?两次猫叫有什么不同?
$ 触摸测试 $ 统计测试 文件:'测试' 大小:0 块:0 IO 块:4096 常规空文件 设备:803h/2051d 索引节点:152694 链接:1 访问:(0664/-rw-rw-r--) Uid:( 1001/ aaron) Gid:( 1001/ aaron) 访问:2012-08-21 11:05:40.586020996 +0200 修改:2012-08-21 11:05:40.586020996 +0200 更改:2012-08-21 11:05:40.586020996 +0200 出生:- $ vim 测试 $ 统计测试 文件:'测试' 大小:5 块:8 IO 块:4096 常规文件 设备:803h/2051d 索引节点:152694 链接:1 访问:(0664/-rw-rw-r--) Uid:( 1001/ aaron) Gid:( 1001/ aaron) 访问:2012-08-21 11:05:52.890021630 +0200 修改:2012-08-21 11:06:31.606023626 +0200 更改:2012-08-21 11:06:31.638023629 +0200 出生:- $猫测试 测试 $ 统计测试 文件:'测试' 大小:5 块:8 IO 块:4096 常规文件 设备:803h/2051d …
我想获取 Linux 服务器上所有可用网络设备名称的列表。我想
ifconfig
Run Code Online (Sandbox Code Playgroud)
可以完成这项工作,但是 ifconfig 会产生相当多的输出:
eth0 Link encap:Ethernet Hardware Adresse 08:00:27:fc:5c:98
inet Adresse:192.168.2.222 Bcast:192.168.2.255 Maske:255.255.255.0
inet6-Adresse: fe80::a00:27ff:fefc:5c98/64 Gültigkeitsbereich:Verbindung
UP BROADCAST RUNNING MULTICAST MTU:1500 Metrik:1
RX packets:329 errors:0 dropped:0 overruns:0 frame:0
TX packets:177 errors:0 dropped:0 overruns:0 carrier:0
Kollisionen:0 Sendewarteschlangenlänge:1000
RX bytes:41496 (40.5 KiB) TX bytes:32503 (31.7 KiB)
eth1 Link encap:Ethernet Hardware Adresse 08:00:27:e9:35:7d
[...]
eth2 Link encap:Ethernet Hardware Adresse 08:00:27:ff:db:fe
[...]
lo Link encap:Lokale Schleife
[...]
Run Code Online (Sandbox Code Playgroud)
我想要实现的是一个列表
eth0
eth1
eth2
lo
Run Code Online (Sandbox Code Playgroud)
甚至更好
eth0
eth1
eth2
Run Code Online (Sandbox Code Playgroud)
我认为这可以通过“cat”、“sed”和“grep”的组合来完成,但我根本不知道如何去除不必要的信息。
为什么这不起作用?
ls *.txt | xargs cat > all.txt
Run Code Online (Sandbox Code Playgroud)
(我想将所有文本文件的内容加入一个“all.txt”文件中。) find 与 -exec 也应该可以工作,但我真的很想了解 xargs 语法。
谢谢
我想在使用之前测试一个替换,所以我正在尝试编写一个快速的在线命令来查看输出是什么。但是,我不确定语法是什么。我想做的是
cat file | -replace "a", "b"
Run Code Online (Sandbox Code Playgroud)
什么是正确的 powershell 语法?
我知道我也可以做$a = cat file然后在 上进行替换$a,但我想将其保留在一行上
我很懒,我可以写一个脚本来做到这一点,但我什至懒得去想怎么做。
我经常做这样的事情:
cris$ python runexperiment.py > output.txt
cris$ cat output.txt
Run Code Online (Sandbox Code Playgroud)
有时在查看实验的长输出时,我喜欢让页面滚动并观察连续模式的形成和分散。但是在 100 万行的文件上使用 cat 可能会在 5 秒内完成。这对我来说也太快了。
有什么方法可以减慢查看文件的速度,例如“滚动实用程序”?我想要快,但不是每秒 200k 行(所有这些都可能显示无论如何都不会注册)。
就像是
cris$ scroll -lps=300 output.txt
Run Code Online (Sandbox Code Playgroud)
然后坐下来看着每秒 300 行滚动过去将是理想的,我想。
cat ×10
command-line ×3
linux ×3
pipe ×3
unix ×3
bash ×1
grep ×1
linux-mint ×1
macos ×1
networking ×1
powershell ×1
scrolling ×1
sed ×1
speed ×1
timestamp ×1
windows ×1
xargs ×1