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