2014-12-22 62 views
2

其中包含如何使用shell腳本處理文件中一行中的空格?

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, 

在我的劇本我的文件tool.txt

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之間的問題。

+2

'tr',''|' < input.txt > output.txt' – Mat

回答

1

你可以寫整個代碼在一個單一的,而作爲

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| 
+0

@gniourf_gniourf我故意錯過了它們以在標準輸入中給出輸出。無論如何編輯答案。謝謝:) – nu11p01n73R

+0

我的意思是後面的'|'符號':)'。在循環之後放置重定向會更好:'完成< input > tool1.csv'或'完成< input >> tool1.csv',以避免不必要的大量打開/關閉。 –

+1

@gniourf_gniourf我剛剛注意到:P但實際上,如果我們添加尾部'|',那麼輸出將以兩個'||'結尾,因爲輸入只包含4個字段,其中OP試圖讀取5個字段:/ – nu11p01n73R

1

您是否嘗試閱讀「閱讀」行?

while read line   
do   
    command   
done < file 

然後你有一個seeperate線,您可以使用awk或切拆呢?

相關問題