删除所有尾随换行符,然后附加到文件中

时间:2020-09-19 03:58:19

标签: linux bash

我正在编写一个bash脚本,它将在用户生成的文件后附加几行。我正在使用这种方法进行附肢:

write_imports() {
    cat << EOF
# Install for ${package_name}
import ${package_name}

EOF
}

main(){
    imports=$(write_imports)
    echo "$imports" | tee -a $file

}

我正在尝试解决一个美学问题,有时用户文件在文件末尾会有换行符。这意味着当我运行脚本时,结果如下:

15: "some user code"
16: 
17:
18:
19:
20:# Install for my_package
21:import my_package

当我想要的东西可以使结果更干净时

15: "some user code"
16:# Install for my_package
17:import my_package

我想确保我没有从用户代码中删除任何换行符/空格。我只想剪掉最后的尾随行。

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

要清除文件末尾的空行:

awk

awk '/^$/ {n=n "\n";next;} {printf "%s",n; n=""; print;}' your_file

或使用sed

sed -e :a -e '/^\n*$/{$d;N;};/\n$/ba' < your_file
#or
cat your_file | sed -e :a -e '/^\n*$/{$d;N;};/\n$/ba'
相关问题