Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Linux中使用awk从命令输出中查找特定数据_Linux_Bash_Shell_Awk - Fatal编程技术网

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

在Linux中使用awk从命令输出中查找特定数据,linux,bash,shell,awk,Linux,Bash,Shell,Awk,我想使用awk从命令输出中读取特定数据, 从这里开始 我已经学会了如何从文本文件中读取数据,但我不想从文本文件中读取数据, 我想从这个命令的输出中读取数据 stty -F /dev/ttyUSB0 ispeed 4800 && cat < /dev/ttyUSB0 我想从上面的输出中读取与GGA匹配的行的3rd和5th值 所以我用了这个 awk -F"," '/GGA/ {print $3,$5}' 这里,-F定义了一个字段分隔符,即“,” 我最后的命令是 aw

我想使用awk从命令输出中读取特定数据, 从这里开始

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

stty -F /dev/ttyUSB0 ispeed 4800 && cat < /dev/ttyUSB0    
我想从上面的输出中读取与
GGA
匹配的行的
3rd
5th
值 所以我用了这个

awk -F"," '/GGA/ {print $3,$5}'
这里,
-F定义了一个字段分隔符,即“,”

我最后的命令是

awk -F"," '/GGA/ {print $3,$5}' stty -F /dev/ttyUSB0 ispeed 4800 && cat < /dev/ttyUSB0 
awk-F“,“/GGA/{print$3,$5}”stty-F/dev/ttyUSB0 ispeed 4800&&cat
但该命令不输出任何内容,并给出以下错误:

awk:无法打开stty(没有这样的文件或目录)

所以我试过了

awk -F"," '/GGA/ {print $3,$5}' | stty -F /dev/ttyUSB0 ispeed 4800 && cat < /dev/ttyUSB0 
awk-F“,“/GGA/{print$3,$5}”| stty-F/dev/ttyUSB0 ispeed 4800&&cat
我不知道我在哪里读过这篇文章,但我知道它与
|
有关,这就是为什么我尝试了上面的命令,但仍然没有任何结果,这次我必须使用
CTRL+C
终止输出


我如何才能只输出与GGA匹配的第三行和第五行的值?

您应该编写管道(
|
)以另一种方式链接:

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

太棒了,非常感谢。:)附言:这两个变量3美元和5美元还有别的名字吗。例如,上面的命令将输出,2452.8255 06701.2333是否可以使输出看起来像->Long:2452.8255 Lat:06701.2333您可以在
awk
脚本中编写任何想要打印的内容:而不是
'/GGA/{print$3,$5}'
,write
'/GGA/{print”Long:,$3,“Lat:”,$5}“
现在可以将上述命令的输出写入文件吗?输出是无限的,因此我如何将其写入文件?我已经试过了,但是空文件是creater,stty-F/dev/ttyUSB0 ispeed 4800&&awk-F“,“/GGA/{print$3,$5}”output.txt然后需要使用
fflush()
{print”Long:,$3,“Lat:,$5;fflush(stdout)}
。否则,
awk
将缓冲输出。
stty -F /dev/ttyUSB0 ispeed 4800 && cat < /dev/ttyUSB0 | awk -F"," '/GGA/ {print $3,$5}'
stty -F /dev/ttyUSB0 ispeed 4800 && awk -F"," '/GGA/ {print $3,$5}' < /dev/ttyUSB0