常用文本处理方法

取指定行

取第一行

sed -n '1p' file

-n表示禁止默认的输出,p表示print

取前N行

sed -n '1,np' file

或者

head -n 10 file

取最后一行

sed -n '$p' file

$表示最后一行

或者

tail -1 file

取最后N行

tail -n file

取指定行到最后一行

比如一个perl脚本,取定义main函数开始的行一直到最后一行。/sub main/表示main函数所在的行,$表示最后一行。

sed -n '/sub main/,$p' test.pl

取第M至N行

head -N file | tail -(N - M + 1)

比如取8-11行就是

head -11 file | tail -4

取两个模式之间所有行

sed -n '/sub test/,/&test/p' test.pl

随机取若干行

只能用awk了吧?

取指定列

取第一列

取前N列

取最后一列

取最后N列

取第M至N列

取第M行,第N列。

取指定单词

有一个文件内容如下

4567893435656qq2237645
56789987765444qq223445
345678888990900405500qq3344566

取每行中qq前面的五个数字

sed -n 's/.*\(.\{5\}\)qq.*/\1/p' data

注意,()与{}都需要转义,有什么参数可以不转义么?提取功能实际上用到了替换功能,前面的正则一定是匹配整个行的,然后用\1来替代整个行,最后用p打印之。

拆分行

合并行

去重

修改行

替换某行

将第5行替换为hello,注意要将替换的文本另起一行书写,也就是5c\后面有一个回车。

sed -e '5c\
hello
' test.pl > newtest.pl

如果没有-f参数,且只有一个-e参数,那么-e可以省略,所以下面写法效果一样。

sed '5c\
hello
' test.pl > newtest.pl

==

posted on 2012-02-08 15:47  perlman  阅读(1105)  评论(0编辑  收藏  举报

导航