-
输出时保留原格式 用双引号
userinfo=`who`
echo $userinfo
echo "$userinfo" -
echo a b c| { read x y z ; echo $x $y $z; } 对
echo a b c| { read x y z ; echo $x $y $z;} 错,最后的}前要有空格
echo a b c| { read x y z ; echo $x $y $z;exit;} 对,exit后面不用空格
echo a b c| {read x y z ; echo $x $y $z;exit;} 错 read前要有空格 - busybox
-
查找/etc⽬录下所有⽤户都没有写权限的⽂件
find /etc -not -perm /222 要善用not
-
查找/etc/init.d⽬录下,所有⽤户都有执⾏权限,且其它⽤户有写权限的⽂件
find /etc/init.d -perm -113
-MODE:每一类对象都必须同时拥有指定权限 其他权限有无不关注 -
利⽤sed 取出ifconfig ens33命令中本机的IPv4地址
ifconfig ens33 |sed -r '2!d; s@(.inet )(.)( netmask.*)@\2@'
ifconfig 后面直接跟具体网卡;2!d 打印第二行;用冒号可以隔开两个命令,同时依次执行 -
删除/etc/fstab⽂件中所有以#开头,后⾯⾄少跟⼀个空⽩字符的⾏的⾏⾸的#和空⽩字符
sed -r 's/^#[[:blank:]]+//' /etc/fstab
sed -r 's/^#[[:blank:]]+//'g /etc/fstab 加了一个g表示全局替换,因为行中间可能也有符合条件的
cat /etc/fstab sed -r 's/^#[[:blank:]]+//'
[:blank:] 空白字符(空格和制表符) [:space:] 水平和垂直的空白字符(比[:blank:]包含的范围广)
替换为空的删除思想 -
显⽰pets⽂件中第2⾏及后⾯的1⾏
sed -n '2,+1p' pets
-
在pets⽂件的第2⾏的下⼀⾏添加hello
sed '2ahello' pets
a []text 在指定行后面追加文本,支持使用\n实现多行追加 [] 可有可无 -
在第2⾏后读⼊test.txt⽂件
seq 1 5|sed '2r test.txt' seq别写成sed了
-
删除centos7系统/etc/grub2.cfg⽂件中所有以空⽩开头的⾏⾏⾸的空⽩字符
sed -r 's/^[[:blank:]]+//' /etc/grub2.cfg
sed -r 's/(^[[:blank:]]+)(.*)/\2/' /etc/grub2.cfg -
在centos6系统/root/install.log每⼀⾏⾏⾸增加#号
sed -r 's/.*/#&/' /root/install.log
注意这里的 " & " 符号,如果没有 “&”,就会直接将匹配到的字符串替换掉
sed 's/^/添加的头部&/g' #在所有行首添加
sed 's/$/&添加的尾部/g' #在所有行末添加 -
在/etc/fstab⽂件中不以#开头的⾏的⾏⾸增加#号
sed -r 's@^[^#]@#&@p' /etc/fstab
以上两题只需注重每行的行首替换即可,有特殊行首格式则写出格式,无需写出具体每行其他内容正则 -
处理/etc/fstab路径,使⽤sed命令取出其⽬录名和基名
echo "/etc/fstab" |sed -r 's@^(./)([^/]+/?)$@\1@'
echo "/etc/fstab" |sed -r 's@^(./)([^/]+/?)$@\2@'
echo "/etc/fstab" |sed -r 's#(/.*/)([^/]+/?)$#\1#'
路径最后可能是文件夹,比如/etc/fstab/sd/,所有最后可能有/