bash - 如何使用 shell 脚本处理文件中一行的空格?

标签 bash shell unix

我的文件tool.txt包含

DC OPTIMIZER,b_csw_load_14,s_get_bn_master_14,m_get_bn_master,
DC OPTIMIZER,b_csw_load_14,s_get_cu_qp_zones_14,m_get_qp_zones,
DI_ODS,wf_CSW82_ACTIVITY_DATA_to_ODS,s_m_CSW_BN_MASTER_to_ODS,m_CSW_BN_MASTER_to_ODS,
DI_ODS,wf_CSW82_ACTIVITY_DATA_to_ODS,s_m_CSW_IN_LOCATIONS_to_ODS,m_CSW_IN_LOCATIONS_to_ODS,

在我的脚本中

for i in `tail -n +2 /dssdev/appl/dss/sql/arun/tool.txt`
do
FOLDER=`echo $i|cut -d',' -f1`
WORKFLOW_NAME=`echo $i|cut -d',' -f2`
SESSION_NAME=`echo $i|cut -d',' -f3`
MAPPING_NAME=`echo $i|cut -d',' -f4`
MAPPLET_NAME=`echo $i|cut -d',' -f5`
echo $FOLDER'|'$WORKFLOW_NAME'|'$SESSION_NAME'|'$MAPPING_NAME'|'$MAPPLET_NAME>>tool1.csv
done

我的输出文件包含

DC|DC|DC|DC|DC
OPTIMIZER|b_csw_load_14|s_get_bn_master_14|m_get_bn_master|
DC|DC|DC|DC|DC
OPTIMIZER|b_csw_load_14|s_get_cu_qp_zones_14|m_get_qp_zones|
DI_ODS|wf_CSW82_ACTIVITY_DATA_to_ODS|s_m_CSW_BN_MASTER_to_ODS|m_CSW_BN_MASTER_to_ODS|
DI_ODS|wf_CSW82_ACTIVITY_DATA_to_ODS|s_m_CSW_IN_LOCATIONS_to_ODS|m_CSW_IN_LOCATIONS_to_ODS|

但是我的要求是

DC OPTIMIZER|b_csw_load_14|s_get_bn_master_14|m_get_bn_master|
DC OPTIMIZER|b_csw_load_14|s_get_cu_qp_zones_14|m_get_qp_zones|
DI_ODS|wf_CSW82_ACTIVITY_DATA_to_ODS|s_m_CSW_BN_MASTER_to_ODS|m_CSW_BN_MASTER_to_ODS|
DI_ODS|wf_CSW82_ACTIVITY_DATA_to_ODS|s_m_CSW_IN_LOCATIONS_to_ODS|m_CSW_IN_LOCATIONS_to_ODS|

DCOPTIMIZER 之间的空间是问题所在。

最佳答案

您可以一次性编写整个代码

while IFS="," read -r FOLDER WORKFLOW_NAME SESSION_NAME MAPPING_NAME MAPPLET_NAME
do 
echo "$FOLDER|$WORKFLOW_NAME|$SESSION_NAME|$MAPPING_NAME|$MAPPLET_NAME" 
done < input >> tool1.csv

输出为

DC OPTIMIZER|b_csw_load_14|s_get_bn_master_14|m_get_bn_master|
DC OPTIMIZER|b_csw_load_14|s_get_cu_qp_zones_14|m_get_qp_zones|
DI_ODS|wf_CSW82_ACTIVITY_DATA_to_ODS|s_m_CSW_BN_MASTER_to_ODS|m_CSW_BN_MASTER_to_ODS|
DI_ODS|wf_CSW82_ACTIVITY_DATA_to_ODS|s_m_CSW_IN_LOCATIONS_to_ODS|m_CSW_IN_LOCATIONS_to_ODS|

关于bash - 如何使用 shell 脚本处理文件中一行的空格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27604856/

相关文章:

linux - 递归地将所有文件分类为单个文件

没有选项的 Bash 测试似乎有效,但为什么呢?

bash - 将 shell 脚本的输出重定向到文件

android - 从 Shell 脚本安装 APK 并启动应用程序

python - 将一个正在运行的程序的输出流通过管道传输到另一正在运行的程序的输入流

c - 输出有何不同?

linux - egrep : find lines with no characters

Bash 4.4 vi 模式着色

java - 从终端执行linux命令和java运行时进程的区别

linux - 在 bash 中排序输出