Questions tagged «text-processing»

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

3
打印以特定字符串开头的列
我有一个看起来像这样的文件: ID101 G T freq=.5 nonetype ANC=.1 addinfor ID102 A T freq=.3 ANC=.01 addinfor ID102 A T freq=.01 type=1 ALT=0.022 ANC=.02 addinfor 如您所见,每行的列数略有不同。我特别想要第1、2、3、4列和以ANC= 所需的输出: ID101 G T freq=.5 ANC=.1 ID102 A T freq=.3 ANC=.01 ID102 A T freq=.01 ANC=.02 我通常使用aawk命令来解析文件: awk 'BEGIN {OFS = "\t"} {print $1, $2, $3, $4}' …

2
在vi / vim中,如何附加到文件而不是覆盖文件?
我知道只要做一下就可以写文件:w <file>。我想知道如何通过附加文件而不是覆盖文件来写入文件。 用例示例:我想从一个日志文件中取出一些样本到另一个文件中。为此,我今天可以做到: 打开日志文件 选择一些行 Shift+v 写入文件: :w /tmp/samples 选择更多行 Shift+v 附加到/tmp/samples与:w !cat - >> /foo/samples 不幸的是,第5步很长,很丑陋且容易出错(缺少a >会使您丢失数据)。我希望Vim在这里有更好的东西。

8
将文本文件拆分为固定单词数的行
相关但没有令人满意的答案:如何将大文本文件拆分为500个单词左右的块? 我试图将一个文本文件(http://mattmahoney.net/dc/text8.zip)一行都包含> 10 ^ 7个单词,然后将其拆分为N个单词的行。我当前的方法可行,但相当缓慢且难看(使用shell脚本): i=0 for word in $(sed -e 's/\s\+/\n/g' input.txt) do echo -n "${word} " > output.txt let "i=i+1" if [ "$i" -eq "1000" ] then echo > output.txt let "i=0" fi done 关于如何使它更快或更紧凑的任何提示?

2
如何在文件中搜索文本而忽略换行符?
我想搜索文件中可能分成几行的文本。一个grep,它将忽略换行符并返回匹配的行距。 例如,我将搜索is an example file,并希望在以下文件中找到它: 这是 一个 示例文件。 不要依赖前导或尾随空格,最好完全忽略所有形式的空格(最好将空格的任何序列都视为一个空格)。 一种非理想的解决方案是tr '\n' ' ' | grep,它区分匹配和不匹配,但不显示匹配项,也不能很好地处理大文件。


5
Shell脚本,如果磁盘使用率超过90%,则发送警报邮件
我想在服务器上实现一个脚本,如果磁盘使用率超过90%,它将自动发送电子邮件警报;当磁盘使用率超过95%时,将自动发送第二电子邮件警报。我的文件系统是abc:/xyz/abc,挂载点是/pqr。 我已经试过了: ADMIN="someone@def.com" ALERT=90 df -H | grep -vE 'abc:/xyz/pqr | tmpfs |cdrom' | awk '{ print $5 " " $1 }' | while read output; do usep=$(echo $output | awk '{ print $1}' | cut -d'%' -f1 ) partition=$(echo $output | awk '{ print $2 }' ) if [ …

4
跳过文件的前3个字节
我正在使用AIX 6.1 ksh shell。 我想用一根班轮做这样的事情: cat A_FILE | skip-first-3-bytes-of-the-file 我想跳过第一行的前3个字节;有没有办法做到这一点?


2
如何在文件中每次出现时删除多行?
说我有这个857835线文件,其中包含以下内容: a1 rubbish1 rubbish2 rubbish3 rubbish4 a1 rubbish5 rubbish6 rubbish7 rubbish8 我希望删除a1下一行(rubbish1和rubbish5在本示例中)的所有出现。我该怎么做? 我尝试grep 'a1' -v -A1无济于事,而我的sed skillz并不是很好:} 这次我的Google-fu无法帮助我,请帮助!

1
过滤剪贴板内容而不使用中间文件
我正在尝试修改剪贴板中的文本,删除其中包含某些字符串的某些行,然后获取输出以进行进一步的操作(我更喜欢仅在需要时应对剪贴板)。我在想这样的事情: cat > swapfile ##Paste all grep -v string swapfile ## Read all rm swapfile 我试图阻止文件创建以及在shell stdin / out本身中执行所有操作。我尝试使用管道,重定向,来自输入的grep / sed,但没有一个导致没有不想要的模式的情况下打印输入。

6
从给定的模式集中删除不以模式开头的行
我有一个包含如下数据的文件: report aaaaaaaa - .. -th bbbbbbbbb -to ccccccccc .. --. 问题:我想删除任何不以以下字符串开头的行: report -th -to 这意味着所需的输出将删除所有那些中间不需要的点和哈希,并且将如下所示: report aaaaaaaa -th bbbbbbbbb -to ccccccccc sed/ awk/ grep/等任何解决方案,将工作。

2
sed:匹配两行
我有一个文本文件,其中记录分为两行。我想将它们放在一行上。记录如下所示: 2013-07-29 apt-get install git 2013-07-29 apt-get install rsync 2013-07-31 apt-get install nmap 2013-08-02 apt-get install cifs-utils 2013-08-05 apt-get install telnet 我想得到以下内容: 2013-07-29 apt-get install git 2013-07-29 apt-get install rsync 2013-07-31 apt-get install nmap 2013-08-02 apt-get install cifs-utils 2013-08-05 apt-get install telnet 我尝试使用sed,但无法匹配两行。有技巧sed吗,还是有更好的工具?




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.