linux – 当我在shell脚本中使用cat命令时,如何在文件末尾保留空行

linux – 当我在shell脚本中使用cat命令时,如何在文件末尾保留空行,第1张

概述文件a.txt末尾有两个空行 [yaxin@oishi tmp]$cat -n a.txt 1 jhasdfj 2 3 sdfjalskdf 4 5 我的脚本是: [yaxin@oishi tmp]$cat t.sh #!/bin/sha=`cat a.txt`a_length=`echo "$a" | awk 'END {pr 文件a.txt末尾有两个空行
[yaxin@oishi tmp]$cat -n a.txt      1  jhasdfj     2       3  sdfjalskdf     4       5

我的脚本是:

[yaxin@oishi tmp]$cat t.sh #!/bin/sha=`cat a.txt`a_length=`echo "$a" | awk 'END {print NR}'`echo "$a"echo $a_length[yaxin@oishi tmp]$sh t.sh jhasdfjsdfjalskdf3

打开调试

[yaxin@oishi tmp]$sh -x t.sh ++ cat a.txt+ a='jhasdfjsdfjalskdf'++ echo 'jhasdfjsdfjalskdf'++ awk 'END {print NR}'+ a_length=3+ echo 'jhasdfjsdfjalskdf'jhasdfjsdfjalskdf+ echo 33

cat命令窃取文件末尾的空白行.如何解决这个问题.

解决方法 你这里不需要cat命令,直接使用这样的awk:
awk 'END {print NR}' a.txt

您的问题是将cat的输出存储在shell变量中.即使这样也会给出正确的输出(尽管是UUOC的情况):

cat a.txt | awk 'END {print NR}'

更新:当您尝试执行此 *** 作时:

a=`cat a.txt`

要不然:

a=$(cat a.txt)

陷阱是过程替换,即反向引用内的命令,如你所拥有或在$()中删除尾随换行符.

您可以使用此技巧来获取存储在shell变量中的尾随换行符:

a=`cat a.txt; echo ';'`a="${a%;}"

测试变量值:

echo "$a"printf "%q" "$a"

然后输出也会显示换行符:

jhasdfjsdfjalskdf$'jhasdfj\n\nsdfjalskdf\n\n\n'
总结

以上是内存溢出为你收集整理的linux – 当我在shell脚本中使用cat命令时,如何在文件末尾保留空行全部内容,希望文章能够帮你解决linux – 当我在shell脚本中使用cat命令时,如何在文件末尾保留空行所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1049973.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存