bash - Bash:从变量末尾删除所有特殊字符(不仅仅是 CR 或 LF)
问题描述
我有一些文本文件并使用 将第一行放入变量中var=$(head -n 1 "$@")
,但是该变量包含我想要删除的特殊字符(ASCII 1-31)。
有没有一种快速的方法可以从 ASCII 码 1-31 中去除变量的结尾?我已经使用过${var//[^[:ascii:]]/}
并且var="${var//[$'\t\r\n']}"
已经使用过,但是我需要以简单的方式从末尾删除 ASCII 1-31(不仅仅是 CF/LF/Tab/FF/等)。
解决方案
控制字符有一个字符类——引用grep 手册:
[:cntrl:]
控制字符。在 ASCII 中,这些字符具有 000 到 037 和 177 (DEL) 的八进制代码。在其他字符集中,这些是等效字符(如果有)。
所以,你可以做
var=${var//[[:cntrl:]]}
推荐阅读
- linux - 如何更改某些文件的扩展名?
- ios - 使用 Accelerate 框架的对称带矩阵的特征值
- php - 从动态 php 文件生成 PDF
- microsoft-graph-api - 不支持endsWith过滤器?
- vba - SAP GUI 脚本 VBA - 按钮按下被忽略
- c++ - C++中MCU寄存器映射的位域联合
- html - 我的网站内容在页脚下方
- java - Java Deque(从子数组中查找唯一整数的最大数量。)
- java - 添加项目后防止Jface向导列表调整窗口大小
- javascript - 通过 JQuery Ajax 发送授权令牌承载 - 后端是 .NET Core Web Api