Linux 高级GREP/AWK-导出字符>;[X]

Linux 高级GREP/AWK-导出字符>;[X],linux,bash,shell,awk,grep,Linux,Bash,Shell,Awk,Grep,我有一个超过900k条目的大型日志文件。我想使用Grep/AWK做几件事(如果可能的话): 我想为符号“~”的每一行条目导出一个新的txt文件。符合下列条件: 如果一行/条目仅使用符号“~”两次以上,则应将其包含在新的txt文件中 关于如何(或者如果可能的话)使用Grep/AWK实现这一点有什么想法吗 提前谢谢 试试这一行: awk -F'~' 'NF>3' file > newFile -F定义字段分隔符。我们定义了~ 如果至少有两个~s,则该行应至少有3个字段 如果您希望该行

我有一个超过900k条目的大型日志文件。我想使用Grep/AWK做几件事(如果可能的话):

我想为符号“~”的每一行条目导出一个新的txt文件。符合下列条件:

如果一行/条目仅使用符号“~”两次以上,则应将其包含在新的txt文件中

关于如何(或者如果可能的话)使用Grep/AWK实现这一点有什么想法吗


提前谢谢

试试这一行:

awk -F'~' 'NF>3' file > newFile
  • -F
    定义字段分隔符。我们定义了
    ~
  • 如果至少有两个
    ~
    s,则该行应至少有3个字段
  • 如果您希望该行同时包含两个
    ~
    s,请将
    NF>3
    更改为
    NF>2

试试这一行:

awk -F'~' 'NF>3' file > newFile
  • -F
    定义字段分隔符。我们定义了
    ~
  • 如果至少有两个
    ~
    s,则该行应至少有3个字段
  • 如果您希望该行同时包含两个
    ~
    s,请将
    NF>3
    更改为
    NF>2

您可以使用grep执行此操作:

grep -E '~.*~.*~' input > output


您可以使用grep执行此操作:

grep -E '~.*~.*~' input > output


那么,您只想在行中的任何位置查找具有两次
~
的行?一些示例输入和预期输出可能有助于澄清问题
grep'~.*~.*~'logfile>newfile
实际上,使用“~”2次或更多的行。:)输入是一个爬网日志文件,每行包含URL。输出应相同,但应仅包含包含两个或更多“~”用法的条目。您的问题应包括简洁、可测试的示例输入和预期输出。关于您的问题,有一些地方是模棱两可的(例如,
我想为每一行导出一个新的txt文件
是指每一行输出一个新的输出文件,还是为所有输出行输出一个新的输出文件?),示例输入/输出将澄清这些问题。因此,您只想在该行的任何地方找到两个具有
~
的行?一些示例输入和预期输出可能有助于澄清问题
grep'~.*~.*~'logfile>newfile
实际上,使用“~”2次或更多的行。:)输入是一个爬网日志文件,每行包含URL。输出应相同,但应仅包含包含两个或更多“~”用法的条目。您的问题应包括简洁、可测试的示例输入和预期输出。关于您的问题,有一些东西是模棱两可的(例如,
我想为每行导出一个新的txt文件
是指每行输出一个新的输出文件,还是为所有输出行导出一个新的输出文件?),示例输入/输出将对此进行澄清。请澄清什么是“NF”在您从awk手册页提供的示例中?@Marc:
变量NF被设置为输入记录中的字段总数。
明白了!谢谢我也会尝试一下。谢谢你的帮助!:)OP需要多于2个
~
s的行,因此将3调整为4。为了澄清您给出的示例中的“NF”是什么?@Marc来自awk手册页:
变量NF设置为输入记录中的字段总数。
明白了!谢谢我也会尝试一下。谢谢你的帮助!:)OP需要多于2个
~
s的行,因此将3调整为4。是否可能不需要特定的数字,但更符合逻辑条件?例如“>2”第二个
grep
中有一个参数(3)。这意味着它需要>=3(相当于>2)。太棒了。我试试看。顺便说一下,这是我第一次在这里问问题,我希望在一周内听到一些意见。我要爱这个社区。再次感谢@redneb。我来试试。有没有可能不需要特定的数字,但更符合逻辑的条件?例如“>2”第二个
grep
中有一个参数(3)。这意味着它需要>=3(相当于>2)。太棒了。我试试看。顺便说一下,这是我第一次在这里问问题,我希望在一周内听到一些意见。我要爱这个社区。再次感谢@redneb。我来试试这个。