sed 命令

sed 的所有处理内容都是在缓存中进行的 所以修改不会对源文件产生影响 要想修改源文件需要添加 -i 选项

sed 格式 # sed [选项] ‘[动作指令]’ filename

p 打印 sed ‘/betty/p’ test.txt 打印有betty 的行 但是其他内容也会默认输出 所以需要和 -n 配合使用

-n 禁止默认输出

sed -n ‘/betty/p’ test.txt 只打印有betty字符串的行

sed -n ‘2p’ 打印第二行
sed -n ‘2,4p’ test.txt sed -n -e ‘2p’ -e ‘3p’ -e ‘4p’ test.txt 打印2-4行 多个命令可以用 -e,也可以用;隔开

sed -n ‘1,$p’ test.txt 打印1-最后一行

s替换 格式 sed 's/要被替换的/替换的/g 全局替换
sed ‘2s/要被替换的/替换的/2’ 第二行 第二个匹配的字符被替换
路径分隔符可以替换成@@ 或 |
sed ‘2s/要被替换的/替换的/’ 第二行 第一个匹配的字符被替换
sed ‘3, s / 要 被 替 换 的 / 替 换 的 / ′ 从 第 三 行 到 最 后 一 行 的 匹 配 的 第 一 个 字 符 被 替 换 s e d ′ 3 , s/要被替换的/替换的/' 从第三行到最后一行的匹配的第一个字符被替换 sed '3, s///sed3,s/要被替换的/替换的/g’ 从第三行到最后一行所有被匹配到的字符都被替换
sed ‘4s/^/#/’ 第四行开头加上#号
sed 's/never/@@/;s/cat/dog '多个命令使用用 -e
如何取得网卡地址
ifconfig ens33 | grep ‘inet>’ | sed ‘s/^.inet //’ | sed 's/n.$//’

d删除行 sed ‘d’ 删除所有
sed ‘2,3d’ 删除2-3行
sed ‘3,$d’ 删除3-结尾的行
sed ‘/想要匹配的字符串/d’ 删除有匹配字符串的行 注:在此强调,在默认情况下 sed 并不会修改原始文件,这里被删除的行只是从 sed 的输出中消失了,原始文件没做任何改变。

i 添加行 i在指定行前面插入 sed ‘3i\hello’ 在第三行前面插入

a 添加行 a在指定行后面插入 sed ‘3a\hello’ 在第三行后面插入
sed ‘$a\hello’ 在最后一行插入内容
sed ‘2,4a\hello’ 在2-4行后面插入

如何插入多行 想追加或插入多行数据,则除最后一行外,每行的末尾都要加入""代表数据未完结。
sed ‘2i\hello
world
haha’ test.txt

c修改行 将指定中的行中的所有内容都替换成后面的字符串
sed ‘2c\hello’ 第二行的内容替换成hello
sed ‘2,$c\hello’ 第二行到最后一行的内容替换成hello
sed ‘/when/c\hello’ 有when 的行都替换成hello

r读取 格式: [address]r filename 把filename 文件的内容插入到 address指定行的后面
sed ‘3r /etc/hosts’ test.txt 把/etc/hosts 的所有内容 读取插入到第三行后面
sed ‘$r /etc/hosts’ test.txt 把/etc/hosts 的内容读取插入到最后一行

w写入 sed -n ‘s/cat/dog/w test2.txt’ tet.txt 把修改的行写入到test2.txt
sed -n ‘/hello/w test2.txt’ test.txt 把有hello字符的行写入到test2.txt

i对源文件直接修改 sed -i ‘s/cat/dog/’ test.txt 原文件的内容也会被替换

i.bak 修改源文件之前先备份一个没有修改的 sed -i.bak ‘s/cat/dog/’ test.txt

sed -r sed支持正则表达式 -r选项支持扩展元字符

sed -r 's/^[0-9]+//g' test.txt  把开头是数字的行 把数字替换成空

如何给行内所有行打印上行号

#sum=cat filename | wc -l
#for i in seq 1 $sum ;do sed -i “ i s / / {i}s/^/ is//{i})/” test_rule.txt ;done

awk也是一个数据处理工具

格式:awk [-F 分隔符] '命令'   filename   其中,[-F域分隔符]是可选的,因为awk使用空格或tab键作为缺省的域分隔符
			不指名-F域分隔符的情况下,默认的域分隔符是空格或tab键。
awk 完整格式
awk [-F]  '匹配规则{执行命令}'  filename

awk  '/^$/{print "black line"}'    文件中每有一个空行 就打印一次 black line

任何awk语句都是由'匹配规则{执行命令}'组成,一个awk中可以有多个语句。匹配规则决定执行命令的执行条件。

默认情况下,awk 会将如下变量分配给它在文本行中发现的数据字段:

 $0 代表整个文本行;
 $1 代表文本行中的第 1 个数据字段;
 $2 代表文本行中的第 2 个数据字段;
 $n 代表文本行中的第 n 个数据字段。
~(匹配)
!~(不匹配)
awk -F : ‘ 7   / b a s h 7 ~/bash 7 /bash/{print $1}’ /etc/passwd 如果用户可以登录就输出用户名
第7区域 ~匹配 bash结尾的字符串 如果匹配到了就打印第一区域的内容

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值