dos2unix在一个变量中

时间:2015-11-03 18:34:30

标签: bash dos2unix

我需要在变量中执行dos2unix命令。 对于文件,我们只需dos2unix myfile.txt。 我怎么能用变量做到这一点? 例如:

variable="bla\r"
dos2unix $variable

也欢迎使用其他命令的消息。

PS:我无法在我阅读文本的地方执行dos2unix。

3 个答案:

答案 0 :(得分:3)

这里不需要任何外部命令;您可以使用参数扩展来仅使用内置于shell本身的功能来删除CR,因此执行速度更快(使用相当短的字符串)并保证可以在任何具有bash的系统上工作(或类似扩展的shell,例如ksh93或zsh),即使没有安装dos2unix:

$ PS1='> ' # for readability, to distinguish output starting with '$' literals
> variable_in=$'bla\r'
> variable_out=${variable_in//$'\r'/}
> printf '%q\n' "$variable_in"
$'bla\r'
> printf '%q\n' "$variable_out"
bla

答案 1 :(得分:2)

您可以使用tr

echo "$variable"| tr -d '\r'

tr -d '\r' <<< "$variable"

答案 2 :(得分:1)

dos2unix可以读取标准输入,因此您可以编写echo "$variable" | dos2unix。试试这个:

$ variable=$'bla\r'

$ echo "$variable" | cat -A
bla^M$

$ echo "$variable" | dos2unix | cat -A
bla$