shell 之sed&test

记录2020-8-20需求

sed命令

sed不能操作空文件

num=`cat  $HOME/data.txt |wc -l`
sed -i  '1l'" $num" $HOME/data.txt

本想把data.txt文件出产出的数据条数作为文件头产出到第一行,后来发现当数据条数为0,文件头并不能显示0。
经过一番查阅,得出结论:
sed是基于行来处理文件流的编辑器,如果 文件为空,sed命令就无法处理。
于是转变思路先判断文件是否为空,为空直接插入0,不为空用sed在第一行插入数据条数

test -s data.txt && sed -i '1i'"$num" $HOME/data.txt ||echo "0" >> $HOME/data.txt

补课时间:

  • sed -i 直接对内容进行修改,不加-i时默认只是预览,不会对文件做实际修改~
  • test -s 判断文件是否为空,注意后面跟文件名
  • shell为变量赋值时不用加 $,引用变量时加 $
num=123
echo $num
  • shell变量名和等号之间不能有空格

  • shell单引号字符串的限制:

    单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
    单引号字串中不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,作为字符串拼接使用。

  • 双引号的优点:
    双引号里可以有变量
    双引号里可以出现转义字符

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值