繁体   English   中英

awk on windows - print fields - quotes as delimiter

[英]awk on windows - print fields - quotes as delimiter

这是Feed文件,

dfscmd /map "\\SERVER24\dfs\shared\can\Group Pension\Quality Assurance Auditors" "\\serverfile16\bugp-qaaud$" ""
dfscmd /map "\\SERVER24\dfs\userhome\serverfile52_d" "\\serverfile52\userhome_d" ""
dfscmd /map "\\SERVER24\dfs\shared\can\Wealth Management\WM CSC Stats - Support Team, CRT Team & CSR Performance" "\\serverfile48\bucan-WM_CSC_Support_&_CRT_Team_Stats" ""

使用这一行

gawk -v FS=""" "{print $2 \";\" $4 }" a.txt

我能够打印,但我无法保存输出,

C:\>gawk -v FS=""" "{print $2 \";\" $4 }" a.txt   >b.txt
\\SERVER24\dfs\shared\can\Group Pension\Quality Assurance Auditors;\\serverfile16\bugp-qaaud$
\\SERVER24\dfs\userhome\serverfile52_d;\\serverfile52\userhome_d
\\SERVER24\dfs\shared\can\Wealth Management\WM CSC Stats - Support Team, CRT Team & CSR Performance;\\serverfile48\bucan-   WM_CSC_Support_&_CRT_Team_Stats
gawk: (FILENAME=a.txt FNR=3) fatal: cannot open file `>b.txt' for reading (Invalid argument)

单引号应始终用于包围awk的括号。 这会更好:

 gawk -v FS=\" '{ print $2 ";" $4 }' a.txt > b.txt

b.txt内容:

\\SERVER24\dfs\shared\can\Group Pension\Quality Assurance Auditors;\\serverfile16\bugp-qaaud$
\\SERVER24\dfs\userhome\serverfile52_d;\\serverfile52\userhome_d
\\SERVER24\dfs\shared\can\Wealth Management\WM CSC Stats - Support Team, CRT Team & CSR Performance;\\serverfile48\bucan-WM_CSC_Support_&_CRT_Team_Stats

编辑:

如果您正在使用Windows,您可能还想考虑运行这样的脚本:

gawk -f script.awk a.txt > b.txt

script.awk内容:

BEGIN { FS="\"" }
{ print $2 ";" $4 }

这样可以避免在表达式周围包含引号并生成所需的结果。 HTH。

gawk -v FS=""" "{print $2 \";\" $4 }" a.txt   ">b.txt

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM