Questions tagged «text-processing»

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


3
如何用另一个文件中的一部分文本替换文件中两个标记之间的文本?
假设我在中有一段文字~/.bashrc: #~/.bashrc # ...some commands... # aliases alias suicide='sudo rm -rf /' # end aliases # other commands 我希望将该文本块替换为另一个文件中两个标记之间包含的一些其他文本: stuff-to-place-in-bashrc.txt # stuff-to-place-in-bashrc.txt # ...stuff... # aliases alias ldir='ls * -d' alias ithinklifeisworthliving='echo all good' # end aliases # ...more stuff... 我试过了 sed -ne 's/# aliases\s+\(.*\)\s+# end aliases/\1/' stuff-to-place-in-bashrc.txt 但是我真的在黑暗中摇摆。有人可以帮我吗? 如何从中提取文本stuff-to-place-in-bashrc.txt? …

4
分割不同命令的输入并合并结果
我知道如何合并不同命令的结果 paste -t',' <(commanda) <(commandb) 我知道将相同的输入传递给不同的命令 cat myfile | tee >(commanda) >(commandb) 现在如何结合这些命令?这样我就可以 cat myfile | tee >(commanda) >(commandb) | paste -t',' resulta resultb 说我有一个文件 myfile: 1 2 3 4 我想制作一个新文件 1 4 2 2 3 4 3 2 6 4 1 8 我用了 cat myfile | tee >(tac) >(awk …

5
哪些命令将输入​​制表符分隔的文本文件,并将每行削减为80个字符?
我有(有时)制表符分隔的数据的多行文本文件。我想输出文件,以便我可以浏览它-所以我只希望看到每行的前80个字符(我设计了文本文件,将重要内容放在每行的第一位)。 我以为我可以用cat读取文件的每一行,并将每一行发送到管道中的下一个命令: cat tabfile | cut -c -80 但这似乎是坏事。我试着胡闹,grep似乎可以工作-但后来我发现,不行(不是文件中的每一行都包含80多个字符)-看来,制表符被切为单个字符。 我试过了: cat tabfile | tr \t \040 | cut -c -80 通过消除空白可读性,即使那样会使我的数据有些混乱。但这没有用。都没有: cat tabfile | tr \011 \040 | cut -c -80 也许我使用的tr错误?我以前在tr上遇到过麻烦,想删除多个空格(似乎我在这台机器上可以访问的tr的版本有一个-s选项,用于压缩多个字符-我可能需要更多地使用它) 我确定如果弄乱了我可以使用perl,awk或sed或其他方法来执行此操作。 但是,我想要一个使用(POSIX?)常规命令的解决方案,以使其尽可能地可移植。如果最终使用tr,则可能最终会尝试将制表符转换为字符,也许要进行计算,削减计算量,然后将这些字符转换回制表符以进行输出。 它不必是一行,也不需要直接在命令行中输入-脚本就可以了。 关于选项卡文件的更多信息: 我使用制表符来中断字段,因为有一天我可能想将数据导入其他程序。所以我倾向于在内容之间只有一个选项卡。但是我也使用制表符将内容与垂直列对齐,以帮助查看纯文本文件时提高可读性。这意味着对于某些文本,我会在内容的末尾用空格填充,直到到达选项卡将使下一个字段与上下两个字段对齐的位置为止。 DarkTurquoise#00CED1海洋,天空,划艇自然 MediumSpringGreen#00FA9A对树魔术有用 青柠#00FF00仅用于春鸡和果肉



5
从包含时间戳的文件中删除重复的行
这个问题/答案为删除文件中的相同行提供了一些很好的解决方案,但是对我来说不起作用,因为否则重复的行都带有时间戳。 是否可以让awk在确定重复项时忽略一行的前26个字符? 例: [Fri Oct 31 20:27:05 2014] The Brown Cow Jumped Over The Moon [Fri Oct 31 20:27:10 2014] The Brown Cow Jumped Over The Moon [Fri Oct 31 20:27:13 2014] The Brown Cow Jumped Over The Moon [Fri Oct 31 20:27:16 2014] The Brown Cow Jumped Over The …

2
用部分可选的内容来抓取一段文本
我在一个非常大的日志文件(例如A.log)中描述了一个事件的多个条目。我想对日志文件中的事件条目做两件事: 计算每个此类条目的出现次数(这不是强制性要求,但是很高兴拥有)。 将实际条目提取到一个单独的文件中,并在以后进行研究。 典型的事件条目如下所示,并且它们之间还会有其他文本。因此,在下面的示例中,有两个事件条目,第一个包含两个DataChangeEntry 有效负载,第二个包含一个DataChangeEntry 有效负载。 Data control raising event :DataControl@263c015d[[ #### DataChangeEvent #### on [DataControl name=PatternMatch_LegendTimeAxis, binding=.dynamicRegion1. beam_project_PatternMatch_dashboard_LegendTimeAxis_taskflow_LegendTimeAxis_beamDashboardLegendTimeAxisPageDef_beam_project_PatternMatch_dashboard_LegendTimeAxis_taskflow_LegendTimeAxis_beamDashboardLegendTimeAxis_xml_ps_taskflowid.dynamicRegion58. beam_project_PatternMatch_view_LegendTimeAxis_taskflow_LegendTimeAxis_beamVizLegendTimeAxisPageDef_beam_project_PatternMatch_view_LegendTimeAxis_taskflow_LegendTimeAxis_beamVizLegendTimeAxis_xml_ps_taskflowid.QueryIterator] Filter/Collection Id : 0 Collection Level : 0 Sequence Id : 616 ViewSetId : PatternMatch.LegendTimeAxis_V1_0_SN49 ==== DataChangeEntry (#1) ChangeType : UPDATE KeyPath : [2014-06-26 06:15:00.0, 0] AttributeNames : [DATAOBJECT_CREATED, COUNTX, …

8
Grep其余部分…比赛结束后
我有一个仅包含两行的文件,具有以下结构: $ cat /tmp/pwpower.log 000D6F0000D34227, -114.10 000D6F0001A405C4, -130.09 这些值是我的太阳能发电厂的功率值。负值表示生成。 我需要通过grep / sed / awk提取的值-哪种方法最聪明。我需要分别提取两个值并且没有减号。 我现在做的事有点愚蠢,但是可以用-我敢肯定你们中的许多人会为我提供更聪明的方法:-)在这里,我当然只看到值加上减号。 要获得第一个值: cat /tmp/pwpower.log |grep -o "\-.*" | head -n 1 要获取第二个值: cat /tmp/pwpower.log |grep -o "\-.*" | tail -n1 和相关的问题,是否有一种简单的方法来获取这些STRING并进行转换,以便我可以计算出SUM?

6
将大文件拆分为多个块而无需拆分条目
我有一个很大的.msg文件,格式为UIEE格式。 $ wc -l big_db.msg 8726593 big_db.msg 本质上,文件由各种长度的条目组成,如下所示: UR|1 AA|Condon, Richard TI|Prizzi's Family CN|Collectable- Good/Good MT|FICTION PU|G.P. Putnam & Sons DP|1986 ED|First Printing. BD|Hard Cover NT|0399132104 KE|MAFIA KE|FICTION PR|44.9 XA|4 XB|1 XC|BO XD|S UR|10 AA|Gariepy, Henry TI|Portraits of Perseverance CN|Good/No Jacket MT|SOLD PU|Victor Books DP|1989 BD|Mass Market Paperback NT|1989 tpb …

4
删除文件中比给定日期新的行
我坚持如何删除比给定日期新的行。这是文件内容的片段。 buildsave.txt 647919 2013/11/30 647946 2013/11/30 647955 2013/12/01 648266 2013/12/03 648267 2013/12/03 648674 2013/12/04 我想删除比2013/12/03更新的行,仅保留 647919 2013/11/30 647946 2013/11/30 647955 2013/12/01 如何通过bash做到这一点?


2
如何在awk中将两列相乘?
我想将输入文件中的第1列与第2列(到文件末尾)相乘,并在单独的文件中输出1列并乘以3列。 input.txt: 1 677679866 2 121867616 3 49413198 4 40415982 output.txt: 1 677679866 2 243735232 3 148239594 4 161663928

2
根据column1连接多行
我有一个如下文件。 abc, 12345 def, text and nos ghi, something else jkl, words and numbers abc, 56345 def, text and nos ghi, something else jkl, words and numbers abc, 15475 def, text and nos ghi, something else jkl, words and numbers abc, 123345 def, text and nos ghi, something else jkl, …

1
如何显示稀疏文件的非稀疏部分?
想象一下使用以下命令创建的文件: truncate -s1T file echo test >> file truncate -s2T file 我现在有一个2 tebibyte文件(在磁盘上占用4kiB),"test\n"中间写着。 我将如何"test"有效地恢复它,而不必读取整个文件。 tr -d '\0' < file 将给我结果,但这将需要几个小时。 我想要的是仅输出文件的非稀疏部分的东西(仅在"test\n"或更可能的情况下,分配在存储该数据的磁盘上分配的4kiB块)。 有API可以找出分配文件的哪一部分(FIBMAP,FIEMAP,SEEK_HOLE,SEEK_DATA ...),但是哪些工具可以公开这些内容? 便携式解决方案(至少支持这些API的OS)将受到赞赏。

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.