Questions tagged «text-processing»

通过程序,脚本等操作或检查文本

3
是否可以将“ find -exec”嵌套在另一个“ find -exec”中?
我追求的是以下内容,但是无论我如何转义{}和+ ; find ./ -maxdepth 1 -type d -name '.*' -exec \ find {} -maxdepth 1 -type f -name '*.ini' -exec \ md5sum \{\} \\; \; 看到Unix-&-Linux问题之后,我发现以下代码可以工作,但它不是嵌套find,因此我怀疑有更好的方法来完成此特定工作。 find ./ -maxdepth 1 -type d -name '.*' \ -exec bash -c 'for x; do find "$x" -maxdepth 1 -type f -name "*.ini" …

5
一行多行排序文本文件
我有一个这种格式的文本文件: #################################### KEY2 VAL21 VAL22 VAL23 VAL24 #################################### KEY1 VAL11 VAL12 VAL13 VAL14 #################################### KEY3 VAL31 VAL32 VAL33 VAL34 我想按KEY行对该文件排序,并在结果中保留下4行,因此排序结果应为: #################################### KEY1 VAL11 VAL12 VAL13 VAL14 #################################### KEY2 VAL21 VAL22 VAL23 VAL24 #################################### KEY3 VAL31 VAL32 VAL33 VAL34 有没有办法做到这一点 ?



6
如何将列表与特定字符对齐?
是否可以使用一个或一组命令将文本行水平对齐到任意字符?例如,使用电子邮件地址列表,输出将生成一个文本文件,其中所有'@'字符垂直排列。 为了获得成功,我认为必须在大多数行的开头添加可变数量的空白。我不希望使用单独的列,因为它们会花费更多的精力进行阅读(例如column -t -s "@" < file.txt)。 之前: 123@example.com 456789@example.net 01234@something-else.com 后: 123@example.com 456789@example.net 01234@something-else.com 换句话说:我可以指定一个字符作为锚点,周围的文本围绕该锚点水平居中吗?我的用例是电子邮件地址,以使它们更易于可视化扫描。


3
在已排序的文本文件中进行二进制搜索
我有一个很大的排序文件,其中包含数十亿行可变长度的行。给定新行,我想知道如果已包含在已排序文件中,它将获得哪个字节数。 例 a\n c\n d\n f\n g\n 给定输入“ foo”,我将得到输出9。 仅通过遍历整个文件就很容易做到这一点,但是由于数十亿行可变长度,执行二进制搜索会更快。 这样的文本处理工具已经存在了吗? 编辑: 现在可以了:https : //gitlab.com/ole.tange/tangetools/blob/master/bsearch/bsearch

3
如何在sed或awk流中添加页眉和/或页脚?
我有一堆输出通过sed和awk。 如何在输出前加上START前缀并在END后加上答案? 例如,如果我有 All this code on all these lines and all these 我如何获得: START All this code on all these lines and all these END ? 我的尝试是: awk '{print "START";print;print "END"}' 但是我得到了 ... START All this code END START on all these lines END START and all these END

9
如何删除文件中每行的第5个字?
我想删除文件中每行的第5个字。 文件的当前内容: File is not updated or and will be removed System will shut down f within 10 seconds Please save your work 55 or copy to other location Kindly cooperate with us D 预期产量: File is not updated and will be removed System will shut down within 10 seconds …

4
如何使用sed操纵连续流输出?
我正在为非技术性观众准备一个演讲。我有一个在bash中运行的程序,该程序输出连续的值流,其中一些很重要。我想突出显示重要结果,以便观众了解他们的频率。问题是我无法sed在正在运行的流上进行操作。如果将结果放入文件中,效果很好,如下所示: cat output.txt | sed "s/some text/some text bolded/" 但是,如果我在运行的输出上尝试相同的操作,如下所示: command | sed "s/some text/some text bolded/" sed什么也没做。有什么想法吗? 正如兰伯特(Lambert)很有帮助地指出的那样,我的说法sed是无所适从。发生的事情是,即使程序通过管道输出,程序也会照常输出到stdout(我很确定它没有写到stderr)sed。 问题似乎是该命令调用了第二个程序,然后将其输出到stdout。第一个程序打印了几行;这些我可以编辑。然后有第二个程序打印的值流;这些我无法编​​辑。 Perl和awk方法也不起作用。

9
命令行工具可以“ cat”成对扩展文件中的所有行
假设我有一个看起来像这样的文件(称为sample.txt): Row1,10 Row2,20 Row3,30 Row4,40 我希望能够处理此文件中的流,该流本质上是所有四行的成对组合(因此我们应该最终得到总共16行)。例如,我正在寻找流式(即有效)命令,其输出为: Row1,10 Row1,10 Row1,10 Row2,20 Row1,10 Row3,30 Row1,10 Row4,40 Row2,20 Row1,10 Row1,20 Row2,20 ... Row4,40 Row4,40 我的用例是我想将此输出流式传输到另一个命令(如awk),以计算有关此成对组合的一些度量。 我有一种方法可以在awk中执行此操作,但是我担心的是,我对END {}块的使用意味着我基本上将整个文件存储在内存中,然后再输出。示例代码: awk '{arr[$1]=$1} END{for (a in arr){ for (a2 in arr) { print arr[a] " " arr[a2]}}}' samples/rows.txt Row3,30 Row3,30 Row3,30 Row4,40 Row3,30 Row1,10 Row3,30 Row2,20 Row4,40 …


5
用于字符串替换的非面向行工具?
我最近问了一个问题,如果换行符出现在另一个特定字符之后,该如何删除。 Unix文本处理工具非常强大,但是几乎所有工具都处理文本行,这在输入适合可用内存的大多数情况下都是可以的。 但是,如果我希望在不包含换行符的巨大文件中替换文本序列,该怎么办? 例如替换<foobar>为\n<foobar>而不逐行读取输入?(因为只有一行,而且长度为2.5G个字符)。

3
将文件拆分为多个小文件,以换行符分隔
是否有按换行符分割文件的实用程序?例如,如果文件包含以下几行, aa bbb cccc 如果我要将其拆分为3个文件,则所需的输出将是: aa,bbb和cccc(在3个不同的文件中) 我已经检查了split命令,它仅按文件大小剪切文件,而不是我想要的文件。 如果我自己没有编写实用程序,是否有任何标准工具可以使用?

2
如何从文本文件中删除特定符号的所有实例?
我有一个巨大的(大约一半的GiB,不可能在其上使用常规的文本编辑器)CSV文件,其中的字段用双引号括起来,"abc","def"但需要一个不带引号的文件(我相信这不会破坏文件的一致性-永远不要在其中的值中使用逗号)。 如何删除所有引号(不在其位置引入空格)?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.