> 文档中心 > shell下删除文件末尾的空行

shell下删除文件末尾的空行


shell下删除文件末尾空行

文章目录

  • shell下删除文件末尾的空行

你能看懂几个?

sed -r -n '1h;1!H;${x;s/(.*[^\n])\n*$/\1/p}'  /etc/wireguard/wg0.confsed '/^$/{$!N;/^\n*$/d}'  /etc/wireguard/wg0.confsed ':n;/^\n*$/{$! N;$d;bn}'  /etc/wireguard/wg0.confsed ':n;/^\n*$/{N;$d;bn}'  /etc/wireguard/wg0.confsed -e :a -e '/^\n*$/{$d;N;ba' -e '}'  /etc/wireguard/wg0.confsed -n ':a;N;$!ba;s/\n\s*$//;p'  /etc/wireguard/wg0.conf
  • awk方式
awk -v RS='\n*$' '1'  /etc/wireguard/wg0.confawk '/./{print b,$0;b=""}!/./{b=b"\n"}' /etc/wireguard/wg0.confawk '/^$/{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