Bash 不正确的AWK命令

Bash 不正确的AWK命令,bash,awk,cat,Bash,Awk,Cat,我有一个约300mb的文本文件,其中充满了星号呼叫,需要发送给客户,但不能包含具体信息 我想提取的唯一信息如下: 星号之间的所有内容*编号#编号,sip out* 我正在考虑在文件numbers.txt 虽然我的格式有点错误。有什么想法吗 目标是在屏幕上打印上述星号之间的\n 提前谢谢 Ashley也许这个gnu awk(由于RS)会得到正确的数据 awk -v RS=",sip-out" 'NF{print $NF RS}' file cat文件 some data 123456#62463

我有一个约300mb的文本文件,其中充满了星号呼叫,需要发送给客户,但不能包含具体信息

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

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

我正在考虑在文件
numbers.txt

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

目标是在屏幕上打印上述星号之间的
\n

提前谢谢


Ashley

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

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

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
    仅提取所有感兴趣的子字符串,包括包含的
    *
    字符
  • 然后删除包含的
    *
    字符。使用
    tr
注意:使用
GNU grep
您只需使用
grep
命令,就可以通过使用look-around断言:

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

grep-Po'(?你能发布一些示例输入和所需输出以使其更易于理解吗?示例输入和输出会更有用。我表示歉意,例如,它应该只打印123456#624634763,从大量文本中而不是从所有文本中提取,因此如果我输入cat file.txt,它将返回所有内容,但我会说..希望cat的结果为only打印回参数编号#编号,sip中的所有信息-out@user3327188-不,不要试图在评论中告诉我们该文件的外观,请更新您的问题,以包括一个实际的示例输入文件,例如10行,再加上您希望得到的输入文件的输出。非常感谢,这真的很有帮助,现在只是另一个快速问题stion.它似乎在将所有内容打印到sip out,“例如,我如何限制它,使其处于#和sipout之间?”@user3327188尝试以下操作:
awk-v RS=“,sip out”'NF{i=split($NF,a,“#”);print a[i]}
或这个:
awk-v RS=“,sip out”'NF{sub(/[^.*.*,”,$NF);print$NF}>
grep -Po '(?<=\*)[0-9]+#[0-9]+,sip-out(?=\*)' numbers.txt