日期:2014-05-16  浏览次数:20930 次

如何把文件中的每一行都处理成 20130101/内容_20130101.dat

比如说 有一个文件
ods_sdp_config 内容是

BC_IX_R
CI_IX_01
IDX1_BUSINESS_CONTRACT
IDX1_BUSINESS_DUEBILL
IDX1_CREDITCARD_BRNOCHANGE
IDX1_CREDITCARD_INFO
IDX1_CREDITCARD_INTRCHANGE
IDX1_CUSTOMER_BELONG
IDX1_CUSTOMER_INFO

文件内容行数不确定。

现在按照如下规则处理,
取出每一行,如 BC_IX_R 处理成 20130101/BC_IX_R_20130101.dat
也就是说,把每一行处理成 20130101/内容_20130101.dat

最后,处理的结果如下
20130101/BC_IX_R_20130101.dat
20130101/CI_IX_01_20130101.dat
20130101/IDX1_BUSINESS_CONTRACT_20130101.dat
20130101/IDX1_BUSINESS_DUEBILL_20130101.dat
20130101/IDX1_CREDITCARD_BRNOCHANGE_20130101.dat
20130101/IDX1_CREDITCARD_INFO_20130101.dat
20130101/IDX1_CREDITCARD_INTRCHANGE_20130101.dat
20130101/IDX1_CUSTOMER_BELONG_20130101.dat
20130101/IDX1_CUSTOMER_INFO_20130101.dat


求shell代码,或思路

------解决方案--------------------
shell还不熟悉一般这个用正则直接替换就可以了,vim编辑器的正则我还没搞明白。
用geany的正则替换的话,搜索
^(.*)$

替换为
20130101/\1_20130101.dat

------解决方案--------------------
sed 貌似更简单
sed -n 's/^\(.*\)$/20130101\/\1_20130101.dat/p' filename