从 unix 变量中删除换行符

Pav*_*ani 18 sed

我有一个变量,其值是使用 sql 查询找到的。

我想从该变量中删除新行字符,因为我想将此变量与另一个连接起来。下面是代码:

dt=`sqlplus -s user/pwd@servicename <<EOF
set feedback off;
set head off;
select  replace(to_char((sysdate-7),'YYYYMonDD')||'_'||to_char((sysdate-1),'YYYYMonDD'),chr(10), '') from dual;
exit;
EOF`

echo "test $dt"
Run Code Online (Sandbox Code Playgroud)

cho*_*oba 37

如果您正在使用bash,则可以使用参数扩展:

dt=${dt//$'\n'/} # Remove all newlines.
dt=${dt%$'\n'}   # Remove a trailing newline.
Run Code Online (Sandbox Code Playgroud)

以下内容也应该适用/bin/sh

dt="${dt%
}"                # Remove a trailing newline.
Run Code Online (Sandbox Code Playgroud)

  • 仅供参考,当您使用 `${var//a/}` 时,您不需要使用最后一个 `/`,`${var//a}` 将完全相同。 (5认同)
  • 对于那些对完整语法感兴趣的人,这里是 bash 文档的链接:https://www.gnu.org/software/bash/manual/html_node/Shell-Parameter-Expansion.html (2认同)

小智 19

听起来你需要“tr”,比如:

 echo ${dt} | tr -d '\n'
Run Code Online (Sandbox Code Playgroud)

像往常一样 man tr 了解细节