- sed
sed主要用来自动编辑一个或者多个文件;简化对文件的反复的操作;编写转换程序等等;非交互式的编辑器,一次只能处理一行的内容
支持正则:
sed 默认会输出文件的每一行,无论这行内容是否能匹配上匹配模式,参数p
假如被匹配到的则会再输出一次。
sed -r ‘p’ file_name (p是sed的内部命令,是打印()输出的作用)
1,搜索替换
sed -r ‘s/旧的/新的/’ 文件 g(全局) s(查找) %(所有) -n(不打印默认输出)-p(默认打印输出,一般-p默认,不显示也行)
r参数不会修改内容,i 直接修改内容
sed -i '1d' 1.txt 删除第一行
sed -i '4,7d' 1.txt 删除4-7
sed -r '2,d' 1.txt 删除第2行-最后
sed -ri '1~2d' /etc/passwd //删除所有奇数行 odd-numbered
sed -r '0~2d' /etc/passwd //删除所有偶数行 even-numbered
删除配置文件中的空行
sed -r '/^[ \t]*$/d' 1.txt
删除注释行及空行:
sed -r '/^#/d' 1.txt 删除注释行
sed -ri '/^[ \t]*#/d 真正删除注释行
# /^[ \t]*$/d' 删除空行
给文件添加注释:
sed -r '2,6s/^/#/'
sed -i '4a\nihao' 1.txt a插入 数字:在第几行后
sed -ri '/^#/d' file.conf
sed -ri '/^[ \t]*#/d'
- awk
awk是行处理器:优势在于处理庞大的数据文件的时候不会出现内存溢出或者是处理很缓慢的问题:默认的分隔符号是空格或者是tab键
awk中的变量:
$0:表示整行;
NF : 统计字段的个数
$NF:是number finally,表示最后一列的信息
RS:输入记录分隔符;
ORS:输出记录分隔符。
NR:打印记录号,(行号)
FNR:可以分开,按不同的文件打印行号。
FS : 输入字段分隔符,默认为一个空格。
OFS 输出的字段分隔符,默认为一个空格。
FILENAME 文件名 被处理的文件名称
$1 第一个字段,$2第二个字段,依次类推…
awk 的工作原理是:
awk -F":" '{print $1,$3}'/etc/passwd
begin{} {} end{} filename
行处理前的操作 行处理的动作 行处理后的动作 文件名
root@awk ~]# awk 'BEGIN{ print 1/2} {print "ok"} END{print "----"}' /etc/hosts
或者:
[root@awk ~]# cat /etc/hosts | awk 'BEGIN{print 1/2} {print "ok"} END{print "----"}'
0.5
ok
ok
----