linux - 在 Linux 中使用 awk 从命令输出中查找特定数据

标签 linux bash shell awk

我想使用awk从命令的输出中读取具体数据, 从这里,http://www.thegeekstuff.com/2010/01/awk-introduction-tutorial-7-awk-print-examples/

我已经学会了如何从文本文件中读取数据,但我不想从文本文件中读取数据, 相反,我想从此命令的输出中读取数据,

stty -F /dev/ttyUSB0 ispeed 4800 && cat < /dev/ttyUSB0    

命令输出如下,

$GPGGA,152826.996,2452.8328,N,06701.2544,E,1,03,3.2,32.7,M,-46.4,M,,0000*48

$GPGSA,A,2,16,23,32,,,,,,,,,,4.5,3.2,3.2*35

$GPRMC,152826.996,A,2452.8328,N,06701.2544,E,2.03,112.95,261213,,,A*6F

$GPGGA,152827.995,2452.8282,N,06701.2520,E,1,03,3.2,32.7,M,-46.4,M,,0000*49

$GPGSA,A,2,16,23,32,,,,,,,,,,4.5,3.2,3.2*35

$GPRMC,152827.995,A,2452.8282,N,06701.2520,E,0.45,148.25,261213,,,A*6A

我想从上面的输出中读取与 GGA 匹配的行的 3rd5th 值 所以我用了这个,

awk -F"," '/GGA/ {print $3,$5}'

这里,-F定义了一个字段分隔符,即','

我的最终命令是,

awk -F"," '/GGA/ {print $3,$5}' stty -F /dev/ttyUSB0 ispeed 4800 && cat < /dev/ttyUSB0 

但是该命令什么都不输出并给出以下错误,

awk: cannot open stty (No such file or directory)

所以我试过了

awk -F"," '/GGA/ {print $3,$5}' | stty -F /dev/ttyUSB0 ispeed 4800 && cat < /dev/ttyUSB0 

我不知道我在哪里读到的,但我知道它必须用 | 做一些事情,这就是为什么我尝试了上面的命令,但仍然没有任何反应,这次我有使用 CTRL+C

终止输出

如何只输出匹配 GGA 的行的第 3 个和第 5 个值?

最佳答案

你应该编写你的管道(|)以相反的方式链接:

stty -F /dev/ttyUSB0 ispeed 4800 && cat < /dev/ttyUSB0 | awk -F"," '/GGA/ {print $3,$5}'

这样 cat < /dev/ttyUSB0 的输出被送入你的 awk命令,

请注意,您应该删除对 cat 的调用命令:

stty -F /dev/ttyUSB0 ispeed 4800 && awk -F"," '/GGA/ {print $3,$5}' < /dev/ttyUSB0

关于linux - 在 Linux 中使用 awk 从命令输出中查找特定数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20787301/

相关文章:

java - 使用java创建unix文件

linux - 在 bash 中使用 {} 的字符串

shell - 右键单击同一目录上的打开终端

python - 带有python "-c"标志的linux命令管道

xml - 使用 xsltproc 输出 XHMTL

linux - Google 计算引擎 - 如何在启动应用程序运行的初始化脚本之前安装磁盘

c - 在 C 中,追加到打开的文件以供 Windows 控制台和 Linux 上的另一个程序读取

node.js - 使用PM2运行完整的开发环境

bash - 如何获取第n个匹配的行号?

mysql - 具有不同字段终止符的命令行 MySQL 选择