Cygwin 在文本文件中重复替换单行中的字段

Cygwin 在文本文件中重复替换单行中的字段,cygwin,Cygwin,我试图通过以下方式批量替换许多文本文件(实际上是*.dlf)的每一行中的分隔字段: xxx | xxx | a | xxx | DD | 与 xxx | xxx | a | xxx | a |等 cygwin或其他DOS shell中是否有语法可供我使用,或者甚至有一个应用程序可供我使用?用Excel和Word间接进行处理很烦人。您可以使用gawk将特定字段替换为新值: sh-3.2$ echo "xxx|xxx|a|xxx|DD|.." | gawk -v FS="|" -v OFS="|"

我试图通过以下方式批量替换许多文本文件(实际上是*.dlf)的每一行中的分隔字段:

xxx | xxx | a | xxx | DD |

xxx | xxx | a | xxx | a |等


cygwin或其他DOS shell中是否有语法可供我使用,或者甚至有一个应用程序可供我使用?用Excel和Word间接进行处理很烦人。

您可以使用
gawk
将特定字段替换为新值:

sh-3.2$ echo "xxx|xxx|a|xxx|DD|.." | gawk -v FS="|" -v OFS="|" '{$5="a"; print}'
xxx|xxx|a|xxx|a|..

谢谢,所以GAWK会用这个语法将每个文件中的每一行的字段5中的“DD”替换为字段3中的“a”?这是一个修订字段,大多数行都会更改。抱歉,不清楚这是否是您想要的。使用
$5=$3
而不是
$5=“a”
。至于如何使用它,它是一个过滤器
cat oldfile.txt | filter>newfile.txt&&mv newfile.txt oldfile.txt
实际上会替换一个文件。耶;到目前为止,它只能处理单个文件。我是否可以对每个文件夹中包含文本文件的大量子文件夹进行批处理?