一直在linux下写awk脚本,今天移植了一次,具体如下,
linux下程序总共两个sh,一个awk,
#process.sh
#!/bin/bash
dos2unix GmidChecklist.csv
awk -F',' '{if(NR > 1) {filename = $1; field = $2; cmd="./read_field.sh "filename" "field; system(cmd) }}' GmidChecklist.csv > result.txt
#read_field.sh
#!/bin/bash
awk -v field=$2 -F',' -f read_field.awk table/$1
#read_field.awk
#!/bin/awk
BEGIN{
filename = "";
}
{
if(filename == "")
{
split(FILENAME, array, "/");
filename=array[length(array)];
}
if(NR==1)
{
for(i=0; i < NF; i++)
{
if($i==field)
{
field_idx = i;
}
}
}
if(NR > 3)
{
print $field_idx" "filename;
}
}
windows下程序总共两个bat,一个awk,
::process.bat
@ECHO OFF
.\awk.exe -F"," "{if(NR > 1) {filename = $1; field = $2; cmd="""read_field.bat """filename""" """field; system(cmd) }}" .\GmidChecklist.csv > output.txt
pause
::read

本文详细介绍了如何将一个在Linux环境下运行的awk脚本移植到Windows系统,并探讨了两者之间的语法差异,包括批处理文件(sh/bat)的编写规则和awk命令的使用方式。在Windows下,需要特别注意单引号和双引号的使用,以及awk命令参数的转义。此外,还提供了适用于Windows的awk.exe下载链接。
最低0.47元/天 解锁文章
7280

被折叠的 条评论
为什么被折叠?



