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
最后
爱你!