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

How do I remove "\n" when export sql result to .txt with bash script?

我想将 sql 结果导出到 .txt,bash 我的结果是这样的:

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' < yourfile.txtsed,但它仍然在新行中有“\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"

这是我使用cat -a时的结果:

campaign_id^Ivascode$
F190720NBWCA004^IHidden_HVC_Revamp_7_Pre_MT_OP^M\n$
F190720NBWCA004^IHVC_Revamp_10_Pre_OP^M\n$
F190720NBWCA004^IHVC_Revamp_10_Pre_T_OP^M\n$
F190720NBWCA004^IHVC_Revamp_10_Pre_B_OP^M\n$
F190720NBWCA004^IHVC_Revamp_11_Pre_OP^M\n$
F190720NBWCA004^IHVC_Revamp_11_Pre_MT_OP^M\n$
F190720NBWCA004^IHVC_Revamp_11_Pre_UMB_OP^M\n$
F190720NBWCA004^IHVC_Revamp_12_Pre_OP^M\n$
F190720NBWCA004^IHVC_Revamp_12_Pre_UMB_OP^M\n$
F190720NBWCA004^IHVC_Revamp_13_Pre_OP^M\n$
F190720NBWCA004^IHVC_Revamp_13_Pre_UMB_OP^M\n$
F190720NBWCA004^IHVC_Revamp_14_Pre_OP^M\n$
F190720NBWCA004^IHVC_Revamp_14_Pre_UMB_OP^M\n$
F190720NBWCA004^IHVC_Revamp_15_Pre_OP^M\n$
F190720NBWCA004^IHVC_Revamp_15_Pre_UMB_OP^M\n$

我希望结果如下所示:

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

谁能帮我实现我的目标?

看起来你的 DOS 行以 \r 结尾,每行末尾都有文字 \n

您可以使用:

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