过滤掉文本文件的输入

过滤掉文本文件的输入

我正在使用 Raspberry Pi(运行 raspbian),并且我有一个 shellscript 通过以下命令不断将值输出到文本文件中:

wavemon -d |grep -i signal >> textfile.txt

输出如下图所示:

signal level: 20 dBm (100.00mW)

问题:如何删除其他单词(信号电平:dBm(100.00mW))然后将数字输入到文本文件中,以便文本文件仅显示数字(20)?

答案1

grep

wavemon -d | grep -oP 'signal level: \K[0-9]+'
  • -o只打印匹配的部分
  • -P激活 Perl 兼容的正则表达式 PCRE ( \K)
  • signal level: \K[0-9]+搜索模式signal level:,然后 \K 将匹配的开头重置为当前位置,并[0-9]+匹配一个或多个数字。

答案2

您可以cut这样使用程序:

cat textfile.txt | cut -d':' -f2 | cut -d' ' -f2

下面是它的工作原理:

signal level: 20 dBm (100.00mW)首先使用 option 在分隔符“冒号”上分割文本-d':',然后使用 option 获取第二个字段-f2

然后按分隔符“空格”分割结果20 dBm (100.00mW)并再次获取第二个字段。

答案3

awk假设这些字段都是可靠的,您可以使用它:

wavemon -d | awk -v IGNORECASE=1 '$1 ~ /signal/ {print $3}' >> textfile.txt

或者如果您只想过滤该文件,因为它已经创建

cut -f3 -d " " textfile.txt

答案4

既然你在树莓派上,你可以用Python的方式来做。

import re
w=open("newfile.txt",'w')
with open('textfile.txt') as f:
    a=re.findall(r'\d+',f.readline())
    w.write(a[0])

相关内容