将 awk gsub 命令的输出重定向到文件

将 awk gsub 命令的输出重定向到文件

我在 stackexchange 上找到了关于如何删除逗号分隔的 csv 文件的引号之间的逗号的答案(无法在那里发表评论,因为我没有所需的代表)。

awk -F'"' -v OFS='' '{ for (i=2; i<=NF; i+=2) gsub(",", "", $i) } 1' infile

如何将输出重定向到文件而不是将其打印到控制台?

我尝试了使用“>”的各种组合,但这只给了我空文件或错误。 “>>”每次都给我一个错误。

答案1

使用标准重定向将在标准输出上工作:

$ awk -F'"' -v OFS='' '{ for (i=2; i<=NF; i+=2) gsub(",", "", $i) } 1' infile > test.out
$

这仍然会将错误打印到屏幕上。

但是,如果您希望错误和标准输出进入文件,请运行:

$ awk -F'"' -v OFS='' '{ for (i=2; i<=NF; i+=2) gsub(",", "", $i) } 1' infile 2>&1 > test.out
$

或者您可以将错误与标准输出分开:

awk -F'"' -v OFS='' '{ for (i=2; i<=NF; i+=2) gsub(",", "", $i) } 1' infile 2> errors.out 1 > test.out

相关内容