Bash 而循环不';t停止(猛击) < >我想删除所有空格和行的空格(如果存在(仅从文件的底部)),然后删除另一行(也只从文件的底部)。

Bash 而循环不';t停止(猛击) < >我想删除所有空格和行的空格(如果存在(仅从文件的底部)),然后删除另一行(也只从文件的底部)。,bash,Bash,我有以下代码: while [[ "$last_line" =~ ^$ ]] || [[ "$last_line" =~ ^[[:space:]]+$ ]] do sed -i -e '${/$/d}' "./file.txt" done sed -i -e '${/$/d}' "./file.txt" 由于某种原因,循环不会停止,它会删除文件中的所有内容。有什么问题吗?您可以使用tac和awk组合进行此操作: tac file | awk 'BEGIN{p=0} p<=

我有以下代码:

while [[ "$last_line" =~ ^$ ]] || [[ "$last_line" =~ ^[[:space:]]+$ ]]
do
    sed -i -e '${/$/d}' "./file.txt"
done
    sed -i -e '${/$/d}' "./file.txt"

由于某种原因,循环不会停止,它会删除文件中的所有内容。有什么问题吗?

您可以使用
tac
awk
组合进行此操作:

tac file | awk 'BEGIN{p=0} p<=1 && /^[[:blank:]]*$/{p=1; next} p==1{p++; next} 1' | tac

tac file         # prints files in reverse
/^[[:blank:]]*$/ # will find all blank/empty lines using search pattern    
tac              # reverse the file content

tac file | awk'BEGIN{p=0}py您没有在循环中更改
$last_line
的值,所以它怎么会停止?哇,我已经忘记了,谢谢,效果很好!我以前从未听说过
tac
(而且它不在OSX终端上)。所以我登录到一个linux框并查找手册页。。。基本上是反向的
cat
。回想起来,我想这是很明显的:DHmm我也在OSX上,但我已经使用
home brew
安装了所有gnu UTIL,因此
tac
适合我。我不知道这是一个软件包顶级技巧!我记得过去在一些BSD口味的Util上遇到了一些麻烦-缺少旗帜等。谢谢@anubhava