unix - 使用 tr 只转换空格,而不是制表符或换行符
问题描述
我正在尝试在 bash 脚本中通过替换空格来转换一行代码,并且仅将空格字符替换为“,”逗号字符。我不希望标签或换行符受到影响。
我有有效的代码:
cat $FILE | tr '\t' '@' | tr '\n' '%' | tr '[:space:]' ',' | tr '@' '\t' | tr '%' '\n' > $NEWFILE
但显然这并不优雅。我知道必须有一种方法可以在不涉及换行符或制表符的情况下仅识别空格 ' ' 字符。这样我就不必将这些字符转换为其他字符然后再返回。
有任何想法吗?
解决方案
如果您只想转换常规空格字符,请不要使用[[:space:]]
(明确存在的目的是转换制表符和换行符以及常规空格);只需使用.
tr ' ' ',' <"$FILE" >"$NEWFILE"
推荐阅读
- react-native - 我是否将 ATS 与 React Native Firebase 一起使用?
- r - semPlot::semPaths 在清单变量节点中不需要的条形图
- javascript - 尝试在 Laravel 中使用 ping 工具包
- javascript - 登录后将用户路由到另一个组件时出错
- powershell - 使用 PowerShell 打开特定文件夹
- c++ - 修改数据文件中的记录
- c++ - 基于模板的获取组件方法在继承时失败
- typescript - 输入参数名称?
- flutter - 如何修复'NoSuchMethodError:getter'length'被调用为null'
- python - 在 Python 中使用 Selenium 防止/延迟模态对话框关闭