变量中的 dos2unix
dos2unix in a variable
我需要在变量中执行 dos2unix
命令。
对于文件,我们只需 dos2unix myfile.txt
。
我怎样才能用变量做到这一点?
例如:
variable="bla\r"
dos2unix $variable
也欢迎使用其他命令提出建议。
PS.: 我无法对正在阅读文本的文件执行 dos2unix。
您可以使用 tr
:
echo "$variable"| tr -d '\r'
或
tr -d '\r' <<< "$variable"
dos2unix 可以从标准输入读取,所以你可以写echo "$variable" | dos2unix
。试试这个:
$ variable=$'bla\r'
$ echo "$variable" | cat -A
bla^M$
$ echo "$variable" | dos2unix | cat -A
bla$
这里不需要任何外部命令;您可以使用参数扩展仅使用 shell 本身内置的功能来删除 CR
s,这样既可以更快地执行(使用相当短的字符串),又可以保证在具有 [=14= 的任何系统上工作](或类似的扩展 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
我需要在变量中执行 dos2unix
命令。
对于文件,我们只需 dos2unix myfile.txt
。
我怎样才能用变量做到这一点?
例如:
variable="bla\r"
dos2unix $variable
也欢迎使用其他命令提出建议。
PS.: 我无法对正在阅读文本的文件执行 dos2unix。
您可以使用 tr
:
echo "$variable"| tr -d '\r'
或
tr -d '\r' <<< "$variable"
dos2unix 可以从标准输入读取,所以你可以写echo "$variable" | dos2unix
。试试这个:
$ variable=$'bla\r'
$ echo "$variable" | cat -A
bla^M$
$ echo "$variable" | dos2unix | cat -A
bla$
这里不需要任何外部命令;您可以使用参数扩展仅使用 shell 本身内置的功能来删除 CR
s,这样既可以更快地执行(使用相当短的字符串),又可以保证在具有 [=14= 的任何系统上工作](或类似的扩展 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