使用bash脚本将sql结果导出到.txt时,如何删除“ \ n”?

时间:2019-07-29 07:03:17

标签: bash shell newline

我想用bash将sql结果导出到.txt,

campaign_id vascode
F190720NBWCA004 Hidden_HVC_Revamp_7_Pre_MT_OP
\n
F190720NBWCA004 HVC_Revamp_10_Pre_MKIOS_OP
\n
F190720NBWCA004 HVC_Revamp_10_Pre_MT_OP
\n
F190720NBWCA004 HVC_Revamp_10_Pre_UMB_OP
\n
F190720NBWCA004 HVC_Revamp_11_Pre_MKIOS_OP
\n
F190720NBWCA004 HVC_Revamp_11_Pre_MT_OP
\n
F190720NBWCA004 HVC_Revamp_11_Pre_UMB_OP
\n

我尝试使用tr -d'\ n'

workDirectory="/home/data"
tanggal=`date '+%Y%m%d' `

echo "Begin Generating ${tanggal}"

msisdn="SELECT * from database;"

echo "`date '+%T'`  :  Download MSISDN Data.."

/usr/bin/mysql -host -user -pass -database -e"$msisdn" | tr -d '\n'> ${workDirectory}/data/"${tanggal}"_msisdn.txt &

wait

echo "done"

我想要类似的结果

campaign_id vascode
F190720NBWCA004 Hidden_HVC_Revamp_7_Pre_MT_OP
F190720NBWCA004 HVC_Revamp_10_Pre_MKIOS_OP
F190720NBWCA004 HVC_Revamp_10_Pre_MT_OP
F190720NBWCA004 HVC_Revamp_10_Pre_UMB_OP
F190720NBWCA004 HVC_Revamp_11_Pre_MKIOS_OP
F190720NBWCA004 HVC_Revamp_11_Pre_MT_OP
F190720NBWCA004 HVC_Revamp_11_Pre_UMB_OP

有人可以帮助我吗?也许我做错了

2 个答案:

答案 0 :(得分:1)

好像您的DOS行结尾\r,而文字\n位于每行结尾。

您可以使用:

/usr/bin/mysql -host -user -pass -database -e"$msisdn"  | sed $'s/\r\\\\n//'

答案 1 :(得分:0)

要删除空行时,可以使用

/usr/bin/mysql -host -user -pass -database -e"$msisdn" | grep .

当您要删除包含两个字符\n的行(而不是换行符)时,可以使用

/usr/bin/mysql -host -user -pass -database -e"$msisdn" | sed '/^\\n$/d'