处理文本的一些小的技巧

grep 精准过滤

如果是有进程名为abcd,abcde等有包含"abc"字符的,那么判断将会不准备,如果精确的匹配到abc呢,当时不知道,只能很诚实的回答,不清楚

其实答案很简单,用grep –w "abc" 或者是grep "\<abc\>"都可以实现

-w, --word-regexp         强制 PATTERN 仅完全匹配字词

假设文本中的内容为:

aaaa

bbbb

ccccc

dddd

要求将文本内容处理为:

aaaa bbbb

cccc dddd

(中间以制表符分隔)

方法一:

sed -n ‘{N;s/\n/\t/p}‘ test.txt

方法二:

awk ‘{tmp=$0;getline;print tmp"\t"$0}‘ test.txt

昨天写一个脚本花了一天的2/3的时间,而且大部分时间都耗在了sed命令上,今天不总结一下都对不起昨天流逝的时间啊~~~

用sed命令在行首或行尾添加字符的命令有以下几种:

假设处理的文本为test.file

在每行的头添加字符,比如"HEAD",命令如下:

sed ‘s/^/HEAD&/g‘ test.file

在每行的行尾添加字符,比如“TAIL”,命令如下:

sed ‘s/$/&TAIL/g‘ test.file

运行结果如下图:

几点说明:

1."^"代表行首,"$"代表行尾

2.‘s/$/&TAIL/g‘中的字符g代表每行出现的字符全部替换,如果想在特定字符处添加,g就有用了,否则只会替换每行第一个,而不继续往后找了

例:

3.如果想导出文件,在命令末尾加"> outfile_name";如果想在原文件上更改,添加选项"-i",如

4.也可以把两条命令和在一起,在test.file的每一行的行头和行尾分别添加字符"HEAD"、“TAIL”,命令:sed ‘/./{s/^/HEAD&/;s/$/&TAIL/}‘ test.file

以上其实都还OK,昨天花太多时间,主要因为被处理的文件是用mysql从数据库提取的结果导出来的,别人给我之后我就直接处理,太脑残了= -我一直有点怀疑之所以结果不对,有可能是windows和linux换行的问题,可是因为对sed不熟,就一直在搞sed。。。。。。。

众所周知(= -),window和linux的回车换行之云云,如果你知道了,跳过这一段,不知道,读一下呗:

Unix系统里,每行结尾只有“<换行>”,即“\n”;Windows系统里面,每行结尾是“<换行><回 车>”,即“\n\r”。一个直接后果是,Unix系统下的文件在Windows里打开的话,所有文字会变成一行;而Windows里的文件在Unix下打开的话,在每行的结尾可能会多出一个^M符号。

好了,所以我的问题就出在被处理的文件的每行末尾都有^M符号,而这通常是看不出来的。可以用"cat -A test.file"命令查看。因此当我想在行尾添加字符的时候,它总是添加在行首且会覆盖掉原来行首的字符。

要把文件转换一下,有两种方法:

1.命令dos2unix test.file

2.去掉"\r" ,用命令sed -i ‘s/\r//‘ test.file

好了,这样处理完,就OK啦!!!

原文地址:https://www.cnblogs.com/augusite/p/10757288.html

时间: 2024-10-12 16:59:22

处理文本的一些小的技巧的相关文章

(a*b)%c 小的技巧

(a*b)%c这个问题看上去好简单啊. 当然我们不是来说这么简单的问题了.你想一想,我们会不会遇到这种情况,a是__int64 ,b也是__int64 当两个数足够大的时候我们直接相乘的就会出现__int64越界的情况,结果就会错误. 所以我们今天记录一下解决这样的问题的方法.不要让这些小的问题妨碍我们来做大的问题. 这里用到了2进制数,和位运算.当然不是转化.仅仅要你会能理解即可 我们先来这样处理. 1.我们分别将a,b对c取模. 2.这里不会的看一下有关位运算的知识.这里我也不知道该怎么说了

富文本框KindEditor的使用技巧

富文本框KindEditor的使用技巧 最近在项目中经常遇到使用富文本框的情况,当然我们所接触的富文本.框有很多,我个人还是比较偏向于KE(KindEditor)),用起来比较舒服,但是很多新手在用的时候往往会感到不知所措.总感觉API写了很多但是就是不知道怎么去用,今天我就和大家讲讲KE的使用和基本技巧: 第一步:我们需要到官网上引用相关的资源包,点击进入官网下载资源包 第二步:引用资源文件 如图所示第一个default.css主要是为了修改我们KE的样式,第二个kindeditor-min.

c/c++ 继承与多态 文本查询的小例子(非智能指针版本)

问题:在上一篇继承与多态 文本查询的小例子(智能指针版本)在Query类里使用的是智能指针,只把智能指针换成普通的指针,并不添加拷贝构造方法,会发生什么呢? 执行时,代码崩掉. 分析下面一行代码: Query qb = ~Query("Alice"); 1,首先调用Query(string)的构造函数,把Query的成员q指向了new WordQuery(s) Query::Query(const std::string& s) : q(new WordQuery(s)){ s

iOS开发&gt;学无止境 - 6个iOS图片文本设计的小技巧

英文:TOPE 作者:星夜暮晨 网址:http://www.jianshu.com/p/88263196fdf0 设计师们似乎拥有着我们这些开发者所没有的“魔力”,他们知道如何让一个应用的界面看起来非常得舒适,以至于有时让我们有了迫不及待将其复现的冲动. 然而,几天过去了,我们仍然还停留在设计稿的第一个界面,写下大段大段的代码,可是界面却不是我们想要的那个样子,这无疑是非常让人恼火的一件事情. 好消息是设计师们的“魔力”并不是我们想象中的那么神奇,有一些关于设计的小技巧.只要掌握了它们,我们就能

文本处理的小诀窍

场景描述 原始文本格式: pid1 kid1 pid3 kid1 pid1 kid2 pid1 kid3 pid2 kid3 pid2 kid4 需要统计的结果:每条pid可以跟哪几个kid关联,最终结果格式: pid1 kid1,kid2,kid3 pid2 kid3,kid4 pid3 kid1 * 原始文本大概有2亿多行 处理思路 将文本按第一列排序,排序后效果: pid1 kid1 pid1 kid2 pid1 kid3 pid2 kid3 pid2 kid4 pid3 kid3 将第一

浅谈angularjs绑定富文本出现的小问题

富文本编辑器上传的文本和图片以及样式,一般都会以html代码的形式上传到服务器,当再次从服务器请求这些数据,回显到页面的时候,用jq绑定数据或者el表达式一般情况下都是没问题的,当使用angular前端架构绑定数据的时候,有时会出现把所有标签都带懂了前台页面. 解决方法很简单如果用的是ng-bind="any"或者是{{any}}的话,只需要把绑定方式替换成ng-bind-html="any",这样绑定的数据就会以html的形式解析在页面上,完美解决上述问题.

[Android]为TextView提供双色文本配置的小工具ColorPhrase

本文链接http://blog.csdn.net/jan_s/article/details/51338944,转载请留言. 在安卓开发过程中,经常会看到文本中有重点的字段是需要换色的,为了表现其特殊性.这个时候大多数人都会用比较简单的方式就是再New 一个TextView出来,显然很快速,然而这样做无疑是给布局绘制添加麻烦,这里简单提供一个工具ColorPhrase类,帮你解决这一的麻烦. 先看demo效果图 . 使用方式: 1.MainActivity.java public class M

符合条件的记录有则修改没有则添加的小优化技巧

通常的写法: if(select count(1) from table where id=XXX)=0 insert into XXX else update table set xxx where id=XXX 优化后的写法: update table set xxx where id=XXX if @@rowcount=0 insert into XXX 第一种情况,无论如何都会执行两次操作,第二种情况只会运行一次操作!!

一个文本处理的小练习:

1.有如下一组数据,经处理,希望得到每行60个碱基,每十个碱基一组. 1.将上述数据复制到编辑器,利用列模式,删除数字.保存为fa格式的文件 2.删除碱基间的空格并将小写变为大写: seqkit seq  11.fa  -g -u  >  12.fa 3.指定每行输出的碱基数 seqkit  seq  12.fa  -s  -w  60  -o   13.fa 4.将每行60个碱基分为10个碱基一组,中间以空格隔开 5.然后就是在每行的行尾添加数字,暂时忘记咋做了.