shell下删除文件末尾的空行

shell下删除文件末尾的空行

文章目录

  • shell下删除文件末尾的空行
    • 你能看懂几个?
    • 最后

你能看懂几个?

  • sed方式
sed -r -n '1h;1!H;${x;s/(.*[^\n])\n*$/\1/p}'  /etc/wireguard/wg0.conf
sed '/^$/{$!N;/^\n*$/d}'  /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 -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

最后

img

爱你!

你可能感兴趣的:(IT,数学建模)