Questions tagged «text-processing»

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




6
像`column -t`这样的命令,而是在输出中保留分隔符
我正在编辑一个简单的表。我想格式化好它。虽然我可以使用tbl,latex或类似名称,但这似乎有些过分了-纯文本确实足够。因为很简单,所以我最好将源作为输出。因此来源也应该看起来不错。这似乎应该是一个完美的工作column -s '|' -t-它找到分隔符并自动插入空格以根据每列的最大宽度对齐。不幸的是,它删除了分隔符,因此我无法在进一步编辑后重新运行它。有没有什么好的文本处理工具可以幂等地做到这一点,以便将其输出用作输入?还是我需要自己写? 编辑:这是我想要的示例: foo | bar | baz abc def | 12 | 23456 应该成为 foo | bar | baz abc def | 12 | 3456 当' '隔板和隔板都column -t很好时。但是我的物品中有空格,所以我不能使用它。使隔离物与隔离物不同会使事情复杂化。我认为在分隔符旁边将它们视为分隔符很有用,但这不是做什么的column -s '|' -t(尽管显然当前的行为也很有用)。

7
每行重复多次
希望文件中的每一行重复固定的次数。 例如,每行重复四次: a b c 变成: a a a a b b b b c c c c 我已经进行了一些搜索,沿着反向进行的过程中有很多问题和答案,例如,将重复的行合并为单行,也许还有一些关于通过再次打印将行加倍的问题。 在C语言中这样做很容易,但是我希望我对本机命令有更多的了解,因此我不必一直使用这种一次性的方法。

2
提取文本文件行的中间部分?
我正在编写一个PHP脚本来解析大型文本文件,以便从中插入数据库。但是,在我的主机上,该文件太大,并且达到了PHP的内存限制。 该文件大约有16,000行。我想将其分成四个单独的文件(首先),看看是否可以加载这些文件。 我可以得到的第一部分head -4000 file.txt。中间部分比较棘手-我正在考虑将tail输出传递到head(tail -4001 file.txt | head -4000 > section2.txt),但是还有另一种/更好的方法吗? 实际上,我的逻辑搞砸了–对于第二部分,我将需要类似的内容tail -12001 file.txt | head - 4000,然后降低下一部分的tail参数。我已经很困惑了!:P

4
没有前导空格的情况下如何grep?
我正在浏览大型代码库,而领先的空格和制表似乎很烦人。有什么办法摆脱它吗? grep -R "something" ./ 例如,代替: foo/bar.cpp: qwertyuiosomethingoi foo/bar/baz.h: 43rfsgsomethingdrfg bar/bar.cpp: 1234edwssomethingczd 我想得到类似的东西: foo/bar.cpp: qwertyuiosomethingoi foo/bar/baz.h: 43rfsgdsomethingrfg bar/bar.cpp: 1234edwssomethingczd 或更好: foo/bar.cpp: qwertyuisomethingooi foo/bar/baz.h: 43rfsgdrsomethingfg bar/bar.cpp: 1234edwssomethingczd

3
寻找旧的经典Unix工具包教科书
我正在寻找一本我前一段时间读过的有关Unix命令行工具包(sh,grep,sed,awk,cut等)的书。这是一本很棒的书,但我完全忘记了它的名字。这本特定的书的伟大之处在于运行示例。它显示了如何仅使用文本处理工具来实现大学簿记系统。您会找到一个使用grep命名的学生,使用sed更新成绩,使用awk计算平均成绩,使用cut将成绩附加到ID上,等等。如果我记忆犹新,这本书的封面是黑色的,大约在1980年出版。 有人记得这本书吗?希望能对您有所帮助。

9
用定界符将列表变成单行
我必须以这种格式列出(负载)IP地址列表: 134.27.128.0 111.245.48.0 109.21.244.0 并通过中间的管道将它们转换为这种格式(组成IP) 134.27.128.0 | 111.245.48.0 | 109.21.244.0 | 103.22.200.0/22 我认为这是一个查找和替换命令,sed但我无法使其正常工作。

3
替换文件中的多行字符串
我有许多文件想要通过用另一个多行字符串替换一个多行字符串来更新。类似于以下内容: * Some text, * something else * another thing 我想替换为: * This is completely * different text 结果将是,替换后包含第一个文本块的文件现在将包含第二个字符串(文件的其余部分保持不变)。 问题的一部分是,我必须在文件系统中找到要更新的文件列表。我想我可以为此使用grep(尽管再次使用多行字符串不是那么容易),然后将其通过sed传送吗? 是否有捷径可寻?sed是一个选项,但是很尴尬,因为我必须添加\ n等。是否有办法说“从此文件中获取输入,在这些文件中进行匹配,然后用另一个文件的内容替换”?我可以在需要时使用python,但是我想要快速简单的方法,因此,如果有可用的实用程序,我宁愿使用它而不是编写自己的脚本(我知道该怎么做)。

3
计算文件中字段的不同值
我的文件包含大约一百万行。在各行中,我有一个名为的字段transactionid,该字段具有重复值。我需要做的是分别计算它们。 无论一个值重复多少次,都应该只计数一次。


10
每隔N行删除换行符
处理文本时,我需要每两行删除换行符。 示例文本: this is line one and this is line two the third and the fourth must be pasted too 所需的输出: this is line one and this is line two the third and the fourth must be pasted too 我尝试了一个while循环,但是一会儿循环是不好的做法。是否可以使用tr或其他任何命令来执行此操作?

12
成对删除重复行?
我今天遇到了这个用例。乍一看似乎很简单,但是随便摆弄sort,uniq,sed并awk透露,这是平凡的。 如何删除所有 成对的重复行?换句话说,如果给定行的重复数为偶数,则将其全部删除;如果重复行数为奇数,请删除除一行以外的所有行。(可以假设输入是排序的。) 干净优雅的解决方案是可取的。 输入示例: a a a b b c c c c d d d d d e 输出示例: a d e


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.