我有一个〜300mb的文本文件,里面装满星号,虽然不能包含具体的信息,但需要发送给客户,
我想提取的唯一信息如下;
星号之间的所有内容*NUMBER#NUMBER,sip-out*
我在考虑在文件.*#(\d+),sip-out.*
numbers.txt
类似的awk
虽然我的格式有点不对劲。任何想法?
目标是在屏幕\n
上打印出上述星号。
提前致谢。
阿什利
答案 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