【发布时间】:2011-01-16 02:18:52
【问题描述】:
我正在尝试通过以下方式批量替换许多文本文件(实际上是 *.dlf)的每一行中的分隔字段:
xxx|xxx|a|xxx|DD|..
与
xxx|xxx|a|xxx|a|...等
cygwin 或其他 DOS shell 中是否有我可以用来执行此操作的语法,或者甚至是可以提供服务的应用程序?用 Excel 和 Word 间接处理很烦人。
【问题讨论】:
标签: cygwin
我正在尝试通过以下方式批量替换许多文本文件(实际上是 *.dlf)的每一行中的分隔字段:
xxx|xxx|a|xxx|DD|..
与
xxx|xxx|a|xxx|a|...等
cygwin 或其他 DOS shell 中是否有我可以用来执行此操作的语法,或者甚至是可以提供服务的应用程序?用 Excel 和 Word 间接处理很烦人。
【问题讨论】:
标签: cygwin
您可以使用gawk 将特定字段替换为新值:
sh-3.2$ echo "xxx|xxx|a|xxx|DD|.." | gawk -v FS="|" -v OFS="|" '{$5="a"; print}'
xxx|xxx|a|xxx|a|..
【讨论】:
$5=$3 而不是$5="a"。至于如何使用它,它的过滤器cat oldfile.txt | filter >newfile.txt && mv newfile.txt oldfile.txt 实际上会替换一个文件。