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

时间:2016-09-26 11:57:36

标签: linux bash shell awk grep

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

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

如果一个行/条目使用符号“〜”超过2次,那么它应该包含在新的txt文件中。

关于如何(或如果可能)使用Grep / AWK执行此操作的任何想法?

提前致谢!

2 个答案:

答案 0 :(得分:2)

试试这个单行:

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

答案 1 :(得分:1)

你可以用grep:

来做
function part($path, $offset, $rows) {
    $buffer = array();
    $buffer['content'] = '';
    $buffer['pointer'] = array();
    $handle = fopen($path, "r");
    fseek($handle, $offset);
    if( $handle ) {
        for( $i = 0; $i < $rows; $i++ ) {
            $buffer['content'] .= fgets($handle);
            $buffer['pointer'] = mb_strlen($buffer['content']);
        }
    }
    fclose($handle);
    return($buffer);
}

function part() {
    $handle = fopen($this->path, "r");
    fseek($handle, $this->pointer);
    if( $handle ) {
        for( $i = 0; $i < 2; $i++ ) {
            if( $this->pointer != $this->filesize ) {
                $this->content .= fgets($handle);
            }
        }
        $this->pointer += mb_strlen($this->content);
    }
    fclose($handle);
}