Bash 不正确的AWK命令
我有一个约300mb的文本文件,其中充满了星号呼叫,需要发送给客户,但不能包含具体信息 我想提取的唯一信息如下: 星号之间的所有内容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
*编号#编号,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