Windows 上的 AWK 等效功能

Gra*_*bot 6 windows awk command-line

我需要对无法安装其他软件的客户端 PC 上的一些问题进行故障排除,并且需要awkWindows xp 和 7 上的一些基本功能。

基本上,我需要从中剥离进程 ID,netstat以便我可以在脚本的不同部分使用它,但不知道可以执行等效于awk '{ print $4 }'. 有没有适合我的选择?显然,我对 windows cli 很陌生。

Den*_*nis 13

对于这样的基本任务,您可以使用for /f.

代替

command | awk '{ print $4 }'
Run Code Online (Sandbox Code Playgroud)

尝试这个:

for /f "tokens=4" %a in ('command') do echo %a
Run Code Online (Sandbox Code Playgroud)

请注意,您必须使用%%a而不是%a在批处理文件中。


Kar*_*ran 5

示例netstat -n -o输出:

Active Connections

  Proto  Local Address          Foreign Address        State           PID
  TCP    127.0.0.1:12345        127.0.0.1:23456        ESTABLISHED     4321
  TCP    127.0.0.1:34567        127.0.0.1:45678        ESTABLISHED     5432
Run Code Online (Sandbox Code Playgroud)

要去除前 2 行,将输出通过管道传输到findstr /v "Active Proto".

要仅打印特定列数据,例如本地地址和 PID,请使用:

for /f "tokens=2,5" %i in ('netstat -n -o ^| findstr /v "Active Proto"') do @echo Local Address = %i, PID = %j
Run Code Online (Sandbox Code Playgroud)

如果在批处理文件中使用,则必须将 % 符号加倍,并且可以将所需的值(%%i、%%j 等)分配给变量。


nix*_*xda 2

要获取进程 ID (PID):

  • 打开cmd.exe并输入:
  • tasklist /fi "imagename eq netstat.exe" > D:\test.txt

该命令将创建一个进程 ID 为 netstat 的新文本文件(如果 netstat 正在运行)。
问题是,该文件将不仅仅包含 PID。

也许这对你来说已经足够开始了?