# shell下删除文件末尾的空行的几种方式

shell下删除文件末尾的空行的几种方式

你能看懂几个?

  • sed方式
sed -r -n '1h;1!H;${x;s/(.*[^\n])\n*$/\1/p}'  /etc/wireguard/wg0.conf
sed ':n;/^\n*$/{$! N;$d;bn}'  /etc/wireguard/wg0.conf
sed ':n;/^\n*$/{N;$d;bn}'  /etc/wireguard/wg0.conf
sed '/^$/{$!N;/^\n*$/d}'  /etc/wireguard/wg0.conf        #--- 或删除中间的行
sed -e :a -e '/^\n*$/{$d;N;ba' -e '}'  /etc/wireguard/wg0.conf
sed -n ':a;N;$!ba;s/\n\s*$//;p'  /etc/wireguard/wg0.conf
  • awk方式
awk -v RS='\n*$' '1'  /etc/wireguard/wg0.conf
awk '/./{print b,$0;b=""}!/./{b=b"\n"}' /etc/wireguard/wg0.conf
awk '/^$/{n++;T=1}T&&!/^$/{for (i=1;i<=n;i++) print "";T=n=0}!/^$/'  /etc/wireguard/wg0.conf
  • awk+tac方式
tac /etc/wireguard/wg0.conf  |awk 'NF>0{x=1}x'|tac
  • 一个解释:
sed ':n;/^\n*$/{$! N;$d;bn}'  /etc/wireguard/wg0.conf
#
:n          # 标签n
/^\n*$/{    # 判断是否匹配pattern,即是否是连续的两个空行
$! N        # 非最后一行的话,执行N命令
$d          # 最后一行时删除pattern space的文本
bn          # 无条件返回标签n

来自: http://bbs.chinaunix.net/thread-2301051-1-1.html

爱你

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值