常用文本处理方法
取指定行
取第一行
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
==