linux sed/awk/grep/cut实用技巧
Usage: sed [OPTION]... {script-only-if-no-other-script} [input-file]
OPTION:
-i , --in-place, 就地编辑文件,不在屏幕上输出
-n ,--quiet ,, 取消打印
-e , --expression=script,, 顺序多重编辑
Operate:
s --- 替换
‘s/A/B/’
g --- 全局
p -- 打印
匹配到的再打一遍
d --- 删除
a --- 追加 查找到的文本后面一行
i --- 追加, 查找到的文本前面一行
c --- 修改, 查找到的文本整行替换
正则:
^ --- 行首定位符
$ --- 行尾定位符
. --- 匹配任意除换行外的一个字符
* --- 匹配前一个字符零次或者无限次
& --- 查找后替换格式
\(xxx\) --- 匹配到的xxx以\1格式可以显示
# 分隔符,无论什么字符,紧跟在s之后,就是分隔符。
# 多行
1、awk实用
1.1、取其中一列,几列值
awk '{print $2, $6}'
1.2、取最后一列,倒数几个列,
awk '{print $NF}'
#倒数第三列
awk '{print $NF-2}'
1.3、过滤出数字开头的第一列
awk '$1~/^[0-9]+/{print $1}'
1.4、替换某列为给定值
awk '{$2="";print}'
awk '{$2="";print $0}'
1.5、计算某列平均值
awk '{x+=$2}END{print x/NR}'
2、sed实用
2.1、去掉每行开头空格,去掉所有空格
| sed 's/^\s*//'
# 去掉所有空格
| sed 's/\s*//g'
3、cut实用
3.1、取每行某几个字符
# 取每行第6个字符
| cut -c 6
# 取每行第6,8个字符
| cut -c 6,8
# 取每行第6~8个字符
| cut -c 6-8