您的位置:首页 > 其它

常用文本处理方法

2012-02-08 15:47 246 查看

取指定行

取第一行

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


==
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: