过滤出一个文件的第二行,第三行
解决;1.sed -n '2,3p' oldboy
2. awk 'NR==2,NR==3' oldboy
3.head -3 oldboy|tail -2
过滤出含有oldboy字符串的行
解决; 1.grep -n 'oldboy' oldboy (-n是显示在原文件中的行号)
2.sed -n '/oldboy/p' oldboy
删除含有oldboy的行
解决:1.grep -v "oldboy" oldboy
2.sed '/oldboy/d' oldboy
将文件中oldboy换成oldgirl
答:1.sed 's#oldboy#oldgirl#g' oldboy
2. vim 编进模式 :%s#oldboy#oldgirl#g
问题1:取test.txt文件的第2行到第3行的内容。
解决: head -3 test.txt|tail -2 (显示前三行,管道,显示前三行的后两行)
sed -n '2,3p' test.txt (-n,取消默认显示其他内容 p为打印 )
awk 'NR==2,NR==3' test.txt (NR指定行)
问题2:过滤出含有root字符串的行※。
解决:grep -n "root" test.txt (-n为显示在源文件中的行号,可不加)
sed -n '/oldboy/p' oldboy (-n为不显示其他)
问题3:删除含有root字符串的行※。
解决; grep -v "root" test.txt (-v取反 ,就是不显示包含root的行)
sed '/root/d' test.txt (d 删除包含……的行)
问题4:取文件的第一列、第三列和最后一列内容,并打印行号※。
解答: awk ‘{print NR $1,$3, $NF}’ $NF为最后有一列 NR显示行号 放在括号前加==数字,即只匹配第几行的第几列
问题5:取出Linux中执行ifconfig eth0后对应的IP地址(只能输出IP地址)。
问题6:过滤文件中第一列内容匹配root的字符串,把符合的行的最后一列输出
grep -w "root"|awk '{print $NF}'
三剑客自身有特长的:
grep 过滤查找内容 筛子
sed 取行 替换 删除 追加
awk 取列
cut 按列切割
-d 指定分隔符 -f指定哪列,多列用逗号
[root@oldboyedu ~]# cat a.txt
1 2 3 4 5 6 7 8 9 10
[root@oldboyedu ~]# cut -d" " -f1,3,5 a.txt
1 3 5
[root@oldboyedu ~]# cut -d" " -f3-5 a.txt
参数:
-F 指定分隔符
列:
2 第二列
NF 最后一列
$NF-1倒数第二列 需加()
[^r] 非r
[r] 以非r字符开头的
网友评论