不正确的 AWK 命令



我有一个~300mb的文本文件,里面装满了星号呼叫,需要发送给客户,尽管不能包含特定信息,

我想提取的唯一信息如下;

星号*NUMBER#NUMBER,sip-out*之间的一切

我正在考虑在文件上使用类似于.*#(d+),sip-out.*的awk numbers.txt

虽然我的格式有点错误。 有什么想法吗?

目标是在屏幕上打印出来,n在上述星号之间。

提前谢谢。

艾希礼

也许这个gnu awk(由于 RS)会得到正确的数据?

awk -v RS=",sip-out" 'NF{print $NF RS}' file

猫文件

some data 123456#624634763,sip-out more data
just 223456#624634763,sip-out more
not this line
1234666#62468883,sip-out

给这个

123456#624634763,sip-out
223456#624634763,sip-out
1234666#62468883,sip-out

如果您不喜欢sip-out文本,只需像这样从print中删除RS

awk -v RS=",sip-out" 'NF {print $NF}' file
123456#624634763
223456#624634763
1234666#62468883

使用 grep 和 o 选项。

grep -o "*.**" file
egrep -o '*[0-9]+#[0-9]+,sip-out*' numbers.txt | tr -d '*'
  • 使用 egrep -o 仅提取所有感兴趣的子字符串,包括封闭*字符。
  • 然后删除封闭的*字符。 使用 tr

注意:有了GNU grep,你可以通过使用环顾四周的断言来摆脱grep命令:

grep -Po '(?<=*)[0-9]+#[0-9]+,sip-out(?=*)' numbers.txt

相关内容

  • 没有找到相关文章

最新更新