Skip to main content
 首页 » 编程设计

python之在第二列之后查找并替换

2025年05月04日12exmyth

我有以下几行

92520536843;Sof_voya_Faible_Email_am;EMAIL;28/01/2015;1;0;0;Sof_voya_Faible_Email_am;30/01/2015;Sof_voya_Faible_Email_Relance_am 
92515196529;Sof_trav_Fort_Email_pm_%yyyy%mm%dd%;EMAIL;05/02/2015;1;0;0;Sof_trav_Fort_Email_pm_%yyyy%mm%dd%;09/02/2015;Export Trav_Fort Postal 

我正在尝试在第 7 个 字段 之后替换 Sof_ 或 _%yyyy%mm%dd% 之类的字符串。

我考虑过使用sed

sed -i 's/<string_to_look_for>/<string_to_replace>/7g' filename 

但它只是改变了字段分隔符。

我想过用这个

awk -F";" '{ for (i=7; i<=NF; i++) print $i }' filename  

但我不知道如何为我要替换的字符串插入搜索和替换。

欢迎任何帮助。

编辑:在第 7 列之后替换 Sof_ 或 _%yyyy%mm%dd% 等字符串后的预期结果。

92520536843;Sof_voya_Faible_Email_am;EMAIL;28/01/2015;1;0;0;voya_Faible_Email_am;30/01/2015;voya_Faible_Email_Relance_am 
92515196529;Sof_trav_Fort_Email_pm_%yyyy%mm%dd%;EMAIL;05/02/2015;1;0;0;trav_Fort_Email_pm;09/02/2015;Export Trav_Fort Postal 

致 Python 和 Perl 专家,因为我正在努力提高我在这些语言方面的知识,欢迎您的帮助:)

请您参考如下方法:

你可以使用这个awk:

awk 'BEGIN{FS=OFS=";"} {for (i=7;i<=NF;i++) gsub(/Sof_|_%yyyy%mm%dd%/, "", $i) } 1' file 
92520536843;Sof_voya_Faible_Email_am;EMAIL;28/01/2015;1;0;0;voya_Faible_Email_am;30/01/2015;voya_Faible_Email_Relance_am 
92515196529;Sof_trav_Fort_Email_pm_%yyyy%mm%dd%;EMAIL;05/02/2015;1;0;0;trav_Fort_Email_pm;09/02/2015;Export Trav_Fort Postal