我想每个人都知道有用的 Linux cmd 行实用程序head和tail. head允许您打印文件的前 X 行,tail执行相同的操作但打印文件的末尾。打印文件中间的好命令是什么?类似于middle --start 10000000 --count 20(打印第 10'000'000 行到第 10'000'010 行)。
我正在寻找可以有效处理大文件的东西。我试过了tail -n 10000000 | head 10,它慢得可怕。
一个 bash 命令输出这个:
Runtime Name: vmhba2:C0:T3:L14
Group State: active
Runtime Name: vmhba3:C0:T0:L14
Group State: active unoptimized
Runtime Name: vmhba2:C0:T1:L14
Group State: active unoptimized
Runtime Name: vmhba3:C0:T3:L14
Group State: active
Runtime Name: vmhba2:C0:T2:L14
Group State: active
Run Code Online (Sandbox Code Playgroud)
我想把它用管道输送到某个东西上,使它看起来像这样:
Runtime Name: vmhba2:C0:T1:L14 Group State: active
Runtime Name: vmhba3:C0:T3:L14 Group State: active unoptimized
Runtime Name: vmhba2:C0:T2:L14 Group State: active
[...]
Run Code Online (Sandbox Code Playgroud)
即删除所有其他换行符
我试过了,... |tr "\nGroup" " "但它删除了所有换行符并吃掉了其他一些字母。谢谢
将 ACDC 替换为 AC-DC
例如我们有这些文件
ACDC - 摇滚乐不是噪音污染.xxx
ACDC - Rocker.xxx
ACDC - Shoot To Thrill.xxx
我希望他们成为:
AC-DC - 摇滚乐不是噪音污染.xxx
AC-DC - Rocker.xxx
AC-DC - 惊险刺激.xxx
我知道 sed 或 awk 用于此操作。我无法用谷歌搜索任何东西,所以我在寻求你的帮助 =) 你能为此任务提供完整的 shell 命令吗?
反馈:OSX 用户的解决方案
我正在 Ubuntu 12.04.1 LTS 上的 bash shell 中运行此命令。我试图一举删除[和]字符,即不必第二次通过管道传输到 sed。
我知道方括号在正则表达式中具有特殊含义,所以我通过在前面加上反斜杠来逃避它们。我期待的结果只是字符串,123但方括号仍然存在,我很想知道为什么!
~$ echo '[123]' | sed 's/[\[\]]//'
[123]
Run Code Online (Sandbox Code Playgroud) 是否有一些简单的方法可以找出我网络上所有机器的 mac 地址,而不是对每个机器进行 SSH,ifconfig | grep HWaddr如果网络上有 300 台机器,我真的需要一些简单的解决方案。
我得到了一个如下所示的字符串:
test.de. 1547 IN SOA ns1.test.de. dnsmaster.test.de. 2012090701 900 1000 6000 600
Run Code Online (Sandbox Code Playgroud)
现在我想用一个空格替换记录之间的所有制表符/空格,以便我可以轻松地使用它 cut -d " "
我尝试了以下方法:
sed "s/[\t[:space:]]+/[:space:]/g"
Run Code Online (Sandbox Code Playgroud)
和各种变体,但无法正常工作。有任何想法吗?
我有一个 30gb 的磁盘分区(认为dd if=/dev/sda1 of=diskimage),我需要从中恢复一些文本文件。数据雕刻工具foremost只能处理具有明确定义的标题的文件,即不能处理纯文本文件,所以我依靠我的好朋友strings.
strings diskimage > diskstrings.txt 生成了一个 3gb 文本文件,其中包含一堆字符串,其中大部分是无用的东西,与我真正想要的文本混合在一起。
大多数垃圾往往是非常长的,不间断的胡言乱语。我感兴趣的东西保证小于16kb,所以我将按行长过滤文件。这是我用来执行此操作的 Python 脚本:
infile = open ("infile.txt" ,"r");
outfile = open ("outfile.txt","w");
for line in infile:
if len(line) < 16384:
outfile.write(line)
infile.close()
outfile.close()
Run Code Online (Sandbox Code Playgroud)
这有效,但供将来参考:是否有任何神奇的单行咒语(想想awk, sed)可以按行长度过滤文件?
我正在尝试将 ini 文件转换为 bash 数组变量。示例ini如下:
[foobar]
session=foo
path=/some/path
[barfoo]
session=bar
path=/some/path
Run Code Online (Sandbox Code Playgroud)
所以这些变成:
session[foobar]=foo
path[foobar]=/some/path
session[barfoo]=bar
Run Code Online (Sandbox Code Playgroud)
等等。
现在,我只能想出这个命令
awk -F'=' '{ if ($1 ~ /^\[/) section=$1; else if ($1 !~ /^$/) print $1 section "=" $2 }'
Run Code Online (Sandbox Code Playgroud)
此外,另一个问题是,它没有考虑附近的空间=。我认为sed可能更适合这项工作,但我不知道如何在sed.
那么知道如何做到这一点吗?
我有一个包含 100000 行的文件,我如何在 linux 下从第 5555 行到第 7777 行获取行。
谢谢大家。
如何使用sed删除“]”后一行中的所有字符?
我正在尝试使用 cat、awk 来 grep 一些文件。现在我的 oneliner 返回给我类似的东西
121.122.121.111] other characters in logs from sendmail.... :)
现在我想删除“]”字符之后的所有内容(带有“]”)。我只想121.122.121.111在我的输出中。
我在谷歌上搜索 sed 的特定示例,但在这些示例中没有找到任何帮助。