Questions tagged «text-processing»

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

8
如何grep-inverse-match和排除“前”和“后”行
考虑一个包含以下条目的文本文件: aaa bbb ccc ddd eee fff ggg hhh iii 给定一个模式(例如fff),我想grep上面的文件以获取输出: all_lines except (pattern_matching_lines U (B lines_before) U (A lines_after)) 例如,如果B = 2和A = 1,则模式=的输出fff应为: aaa bbb ccc hhh iii 如何使用grep或其他命令行工具执行此操作? 请注意,当我尝试: grep -v 'fff' -A1 -B2 file.txt 我没有得到我想要的。我得到: aaa bbb ccc ddd eee fff -- -- fff ggg hhh …

6
连接具有相同标题的多个文件
我有多个文件,这些文件具有相同的标头,并且在其下具有不同的向量。我需要将所有这些都连接起来,但是我只希望连接第一个文件的标头,并且我不希望将其他头连接在一起,因为它们都是相同的。 例如:file1.txt <header>INFO=<ID=DP,Number=1,Type=Integer> <header>INFO=<ID=DP4,Number=4,Type=Integer> A B C file2.txt <header>INFO=<ID=DP,Number=1,Type=Integer> <header>INFO=<ID=DP4,Number=4,Type=Integer> D E F 我需要输出 <header>INFO=<ID=DP,Number=1,Type=Integer> <header>INFO=<ID=DP4,Number=4,Type=Integer> A B C D E F 我可以在R中编写脚本,但是在shell中需要它吗?



4
如何在两个时间戳之间提取日志
我想提取两个时间戳之间的所有日志。有些行可能没有时间戳,但我也想要这些行。简而言之,我希望每一行都落在两个时间戳下。我的日志结构如下: [2014-04-07 23:59:58] CheckForCallAction [ERROR] Exception caught in +CheckForCallAction :: null --Checking user-- Post [2014-04-08 00:00:03] MobileAppRequestFilter [DEBUG] Action requested checkforcall 假设我要提取2014-04-07 23:00和之间的所有内容2014-04-08 02:00。 请注意,日志中可能没有开始时间戳或结束时间戳,但是我希望这两个时间戳之间的每一行。

9
如何只打印最后一列?
echo -e 'one two three\nfour five six\nseven eight nine' one two three four five six seven eight nine 我该如何做一些“魔术”来获得此输出?: three six nine 更新:我不需要这种特定的方式,我需要一个通用的解决方案,以便无论一行中有多少列,例如:awk始终显示最后一列。

8
如何在Linux中删除文件的最后一列
我想删除txt文件的最后一列,但我不知道列号是什么。我该怎么办? 例: 输入: 1223 1234 1323 ... 2222 123 1233 1234 1233 ... 3444 125 0000 5553 3455 ... 2334 222 我希望我的输出是: 1223 1234 1323 ... 2222 1233 1234 1233 ... 3444 0000 5553 3455 ... 2334


5
为什么Shell Command Substitution吞噬了尾随的换行符?
按照下面的示例,以及我最近 在bash中的问题,结尾的换行符char哪里去了?,我想知道它为什么发生 x="$(echo -ne "a\nb\n")" ; echo -n "$x" | xxd -p # Output is: 610a62 # The trailing newline from the 'echo' command # has been "deleted" by Command Substitution 我认为必须有一个非常重要的理由来执行shell动作,即Command Substitution,实际上从它正在替换的命令输出中删除一些数据... 但是我无法理解这一点,因为它似乎是它应该做什么的对立面..即 将命令的输出传递回脚本过程...对我来说,隐瞒一个字符似乎很奇怪,但是我想这是有道理的...我很想找出那个原因。 。

9
如何从文件中删除每隔两行?
文件: Data inserted into table. Total count 13 No error occurred Data inserted into table. Total count 45 No error occurred Data inserted into table. Total count 14 No error occurred Data inserted into table. Total count 90 No error occurred 预期输出文件: Data inserted into table. Total count 13 Data …

2
tr抱怨“非法字节序列”
我是UNIX的新手,我正在使用Kirk McElhearn的“ Mac OS X命令行”自学一些命令。 我试图使用tr,grep以便可以在常规的MS-Office Word文档中搜索文本字符串。 $ tr '\r' '\n' < target-file | grep search-string 但是它返回的只是: Illegal byte sequence. robomechanoid:Position-Paper-Final-Draft robertjralph$ tr '\r' '\n' < Position-Paper-Final-Version.docx | grep DeCSS tr: Illegal byte sequence robomechanoid:Position-Paper-Final-Draft robertjralph$ 我实际上在我创建的脚本上运行了同一行,vi并且可以正确搜索。

3
Unix命令检查文件中的任何两行是否相同?
是否有unix命令可以检查文件中的任何两行是否相同? 例如考虑一个文件 sentences.txt This is sentence X This is sentence Y This is sentence Z This is sentence X This is sentence A This is sentence B 我们看到这句话 This is sentence X 重复。 是否有任何命令可以快速检测到这一点,以便我也许可以像这样执行它- $ cat sentences.txt | thecommand Line 1:This is sentence X Line 4:This is sentence X


8
如何在Bash中将文本追加到多个文本文件的开头和结尾?
我有一个充满文本文件的目录。我的目标是将文本添加到所有文本的开头和结尾。每个文件开头和结尾的文本都相同。 根据我从网上获得的代码,这是用于追加到文件开头的代码: echo -e 'var language = {\n$(cat $BASEDIR/Translations/Javascript/*.txt)' > $BASEDIR/Translations/Javascript/*.txt 这是用于附加到文件末尾的代码。目的是};在每个文件的末尾添加文本: echo "};" >> $BASEDIR/Translations/Javascript/*.txt 我从中提取的示例是针对单个文件执行的。我以为我会尝试使用通配符来处理多个文件*.txt。 我可能还会犯其他错误。无论如何,如何将文本附加到多个文件的开头和结尾?

6
如何使python程序的行为像适当的unix工具?
我周围有一些Python脚本,我正在重写它们。我对他们所有人都有同样的问题。 对于我来说,如何编写程序以使其像适当的unix工具一样运作尚不明显。 因为这 $ cat characters | progname 和这个 $ progname characters 应该产生相同的输出。 我在Python中找到的最接近的东西是fileinput库。不幸的是,我并没有真正看到如何重写我的Python脚本,所有这些看起来像这样: #!/usr/bin/env python # coding=UTF-8 import sys, re for file in sys.argv[1:]: f = open(file) fs = f.read() regexnl = re.compile('[^\s\w.,?!:;-]') rstuff = regexnl.sub('', fs) f.close() print rstuff 如果有标准输入,fileinput库处理标准输入,如果有文件,则处理文件。但是它遍历单行。 import fileinput for line in fileinput.input(): process(line) 我真的不明白。我想如果您要处理的是小文件,或者您对文件的处理不多,这似乎很明显。但是,就我的目的而言,这比仅打开整个文件并将其读取为字符串要慢得多,如上所述。 …

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.