首页 > 解决方案 > 使用 tr 只转换空格,而不是制表符或换行符

问题描述

我正在尝试在 bash 脚本中通过替换空格来转换一行代码,并且仅将空格字符替换为“,”逗号字符。我不希望标签或换行符受到影响。
我有有效的代码:

cat $FILE | tr '\t' '@' | tr '\n' '%' | tr '[:space:]' ',' | tr '@' '\t' | tr '%' '\n' > $NEWFILE

但显然这并不优雅。我知道必须有一种方法可以在不涉及换行符或制表符的情况下仅识别空格 ' ' 字符。这样我就不必将这些字符转换为其他字符然后再返回。

有任何想法吗?

标签: unixtr

解决方案


如果您只想转换常规空格字符,请不要使用[[:space:]]明确存在的目的是转换制表符和换行符以及常规空格);只需使用.

tr ' ' ',' <"$FILE" >"$NEWFILE"

推荐阅读