sed - 修剪流的最后一个字符
问题描述
我sed -e '$s/.$//'
用来修剪流的最后一个字符。这是正确的方法吗?使用其他命令行工具还有其他更好的方法吗?
$ builtin printf 'a\nb\0' | sed -e '$s/.$//' | od -c -t x1 -Ax
000000 a \n b
61 0a 62
000003
编辑:这个命令似乎并不健壮。预期输出a\nb
用于以下示例。需要更好的方法(但不要太冗长)。
$ builtin printf 'a\nb\n' | sed -e '$s/.$//' | od -c -t x1 -Ax
000000 a \n \n
61 0a 0a
000003
解决方案
您可以使用head -c -1
:
printf 'a\nb\0' | head -c -1 | od -c -t x1 -Ax
000000 a \n b
61 0a 62
000003
printf 'a\nb\n' | head -c -1 | od -c -t x1 -Ax
000000 a \n b
61 0a 62
000003
推荐阅读
- reactjs - sending data from client to socket server using socket.io-client library
- mean-stack - 从角度服务器(安装了letsencrypt证书)到节点服务器(安装了自签名证书)通信时出现ERR_CERT_AUTHORITY_INVALID错误
- terraform - 为什么版本控制声明后没有等号“=”
- android - 在Android中修改单元测试时如何跳过构建Apk
- android - 使用电容器火力基地身份验证登录并将新添加的谷歌帐户与以前的匿名帐户相关联
- html - 在jquery mobile,html5 div中加载谷歌地图
- javascript - 从 VBA/JScript 关闭 Excel 工作簿而不使 Excel 崩溃
- c++ - 我们需要设置移动构造函数=默认吗?对于过去使用 C++98/03 用户声明的析构函数 buildet 的遗留类?
- c++ - 容器类如何在 stl 中工作?
- interrupt - 处理具有相同优先级的中断