内置符sed
a 追加指定行后加文件内容
例:sed -i "4a 2222" oldgirl.txt 4行后加
i 追加指定行前加文件内容
例:sed -i "4i 2222" oldgirl.txt 4行前加
正则是贪婪匹配模式
例:stat /etc/hosts|sed -n 4p|sed 's#^.*: (0##g'|sed 's#/-.*##g'
stat /etc/hosts | sed -rn '4s#^.*0(.*)/-rw.*$#\1#gp'
sed 输出加 np
ifconfig eth0|sed -nr '2s#^.*inet (.*) netm.*$#\1#gp'
-n取消默认输出 -r可以用扩展正则 因为后面有扩展正则符 \1=(.*)=ip
活动:象棋 踢键子
grep 过滤查找内容
sed 取行
cut 按列切割
-c 按字符取内容
cut -c8- test.txt 第八个字符起到最扣
-f 指定列
cut -d" " -f"1,3" test.txt
-d 指定分隔符
awk特长,取列
它不仅是命令还是一种编程语言,处理字符串
语法 awk awk参数 条件{动作} 文件
参数:-F 指定字段分隔符=cut-d
$NF最后一列
awk -F ":" '{print $NF}' oldboy.txt
$0 当前整行
awk -F ":" '{print $0}' oldboy.txt
$1第一列,$2第二列
awk -F ":" '{print $1}' oldboy.txt
NR 已经读出的记录数,就是行号,从1开始
awk -F ":" '{print NR}' oldboy.txt
awk -F ":" '{print NR}' oldboy.txt 显示行号
awk 'NR>1&&NR<4' oldboy.txt取2-3行内容
awk '/root/' oldboy.txt
grep root oldboy.txt过滤root
awk '/^[^r]/' oldboy.txt 删除root的行,//里面是字符串
awk -F ":" '{print $1,$3,$NF,NR}' oldboy.txt|cat -n 取文件13最后一列
ifconfig eth0|awk 'NR==2{print $2}' 打印第二列只能输出IP
ifconfig eth0|awk -F "[: ]+"'NR==2{print $4}' 过滤文件中第一列内容匹配root的字符串,把符合的行的最后一列输出
问题1:取test.txt文件的第2行到第3行的内容。
问题2:过滤出含有root字符串的行※。
问题3:删除含有root字符串的行※。
问题4:取文件的第一列、第三列和最后一列内容,并打印行号※。
问题5:取出Linux中执行ifconfig eth0后对应的IP地址(只能输出IP地址)。
问题6:过滤文件中第一列内容匹配root的字符串,把符合的行的最后一列输出
参数:-v 指定字段分隔符