我无法找到sed
个选项来替换字符串匹配后的下两个字符。基本上,在这些CSV文件中,我试图在|
匹配后替换前两个直接管道jobcd
字符,因为它应该是一个字段。
在我意识到这取代了每个|
字符之前,我能够运行这个... sed -i 's/|/%/g' data.csv
以下是这些csv文件的示例行:
-1|7149636|2015-02-14 00:42:23|20150214|4223||Delete Future Batch||jobcd: %PAL| Cnt:60|||1900-01-01 00:00:00|0|||0||||0|0|0|.000
我正试图让那一行看起来像:
-1|7149636|2015-02-14 00:42:23|20150214|4223||Delete Future Batch||jobcd: %PAL% Cnt:60%||1900-01-01 00:00:00|0|||0||||0|0|0|.000
编辑:而不是%
,我正在尝试用\|
替换,所以我试图让输出看起来像:
-1|7149636|2015-02-14 00:42:23|20150214|4223||Delete Future Batch||jobcd: %PAL\| Cnt:60\|||1900-01-01 00:00:00|0|||0||||0|0|0|.000
答案 0 :(得分:0)
您可以使用:
s='-1|7149636|2015-02-14 00:42:23|20150214|4223||Delete Future Batch||jobcd: %PAL| Cnt:60|||1900-01-01 00:00:00|0|||0||||0|0|0|.000'
sed -E 's/(\|jobcd)([^|]*)\|([^|]*)\|/\1\2\\|\3\\|/g' <<< "$s"
-1|7149636|2015-02-14 00:42:23|20150214|4223||Delete Future Batch||jobcd: %PAL\| Cnt:60\|||1900-01-01 00:00:00|0|||0||||0|0|0|.000