小编Gar*_*ver的帖子

单个命令采用两个字符串来提取它们之间的字符串,例如 'tr'(不带表达式)

在这里看到了一种使用 sed 在一行中的其他两个字符串之间获取文本的方法,例如:

sed 's/.*starting_text\(.*\)ending_text.*/\1/'
Run Code Online (Sandbox Code Playgroud)

但我想要一个简单的命令(比如tr,但是用于字符串提取),它只需要两个字符串,并且会在第一个字符串之前或第二个字符串之后修剪所有内容,例如

grep something some_file | between message\"\:\" " with"
Run Code Online (Sandbox Code Playgroud)

并且会处理转义字符。

sed text-processing quoting

5
推荐指数
1
解决办法
5481
查看次数

OS X/Linux 单行/脚本在文本文件中查找最大的重复行组?

我有一个包含执行跟踪的日志,其中无限递归最终在堆栈太深时终止。在较大的行块中有足够的行和有效的包含递归,因此很难识别重复出现的最大块。没有什么独特的东西需要我过滤掉部分行来做出这个决定。

什么是好的单行/脚本(在 POSIX/OS X 中,但最好能在 Linux 和 OS X 中工作),给定文件名/路径名,只能输出连续重复多次的最大行集?

澄清:在我的情况下,日志文件是 432003 行和 80M:

$ wc -l long_log.txt 
432003 long_log.txt
$ du -sm long_log.txt
80  long_log.txt
Run Code Online (Sandbox Code Playgroud)

要创建类似的输入文件,请尝试此操作,感谢此处的帖子提供了创建包含随机单词的文件的方法。

ruby -e 'a=STDIN.readlines;200000.times do;b=[];22.times do; b << a[rand(a.size)].chomp end; puts b.join(" "); end' < /usr/share/dict/words > head.txt
ruby -e 'a=STDIN.readlines;2.times do;b=[];22.times do; b << a[rand(a.size)].chomp end; puts b.join(" "); end' < /usr/share/dict/words > recurrence1.txt
ruby -e 'a=STDIN.readlines;20.times do;b=[];22.times do; b << a[rand(a.size)].chomp end; puts b.join(" "); end' < /usr/share/dict/words > recurrence2.txt …
Run Code Online (Sandbox Code Playgroud)

linux command-line text-processing posix

5
推荐指数
1
解决办法
808
查看次数

标签 统计

text-processing ×2

command-line ×1

linux ×1

posix ×1

quoting ×1

sed ×1