AWK命令不正确

时间:2014-02-28 10:31:57

标签: bash awk cat

我有一个〜300mb的文本文件,里面装满星号,虽然不能包含具体的信息,但需要发送给客户,

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

星号之间的所有内容*NUMBER#NUMBER,sip-out*

我在考虑在文件.*#(\d+),sip-out.*

上使用与numbers.txt类似的awk

虽然我的格式有点不对劲。任何想法?

目标是在屏幕\n上打印出上述星号。

提前致谢。

阿什利

3 个答案:

答案 0 :(得分:0)

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

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

cat 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文字,只需从RS中删除print,如下所示:

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

答案 1 :(得分:0)

将grep与o选项一起使用。

grep -o "\*.*\*" file

答案 2 :(得分:0)

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