linux – 当我在shell脚本中使用cat命令时,如何在文件末尾保留空
发布时间:2021-01-01 21:31:06 所属栏目:Linux 来源:网络整理
导读:文件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 j
|
文件a.txt末尾有两个空行 [yaxin@oishi tmp]$cat -n a.txt
1 jhasdfj
2
3 sdfjalskdf
4
5
我的脚本是: [yaxin@oishi tmp]$cat t.sh
#!/bin/sh
a=`cat a.txt`
a_length=`echo "$a" | awk 'END {print NR}'`
echo "$a"
echo $a_length
[yaxin@oishi tmp]$sh t.sh
jhasdfj
sdfjalskdf
3
打开调试 [yaxin@oishi tmp]$sh -x t.sh
++ cat a.txt
+ a='jhasdfj
sdfjalskdf'
++ echo 'jhasdfj
sdfjalskdf'
++ awk 'END {print NR}'
+ a_length=3
+ echo 'jhasdfj
sdfjalskdf'
jhasdfj
sdfjalskdf
+ echo 3
3
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" 然后输出也会显示换行符: jhasdfj sdfjalskdf $'jhasdfjnnsdfjalskdfnnn' (编辑:均轻资讯网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- linux下logrotate配置和理解---转
- fatal: protocol error: bad line length character: This
- linux – 当计算机切换到睡眠模式时,TCP连接会发生什么?
- linux-kernel – IO-APIC级别与PCI-MSI-X之间的差异
- 拜拜!虚拟机。Windows和Linux终于合体了
- 大神教你在Linux中查找和删除重复文件的4种技巧
- 如何在linux中确定定时器频率
- linux – 为什么我不能在Ubuntu 9.04服务器上外部访问我的C
- macos – 无法在Zsh中完成MacPorts的选项卡
- linux – 如何在远程服务器上使用gpg签名密钥?
站长推荐

