Grep 行首

Grep 行首

我有一个包含以下内容的文件:

(((jfojfojeojfow 
//
hellow_rld
(((jfojfojeojfow
//
hellow_rld

我如何提取以括号开头的每一行?

答案1

行首的符号是^。因此,要打印所有首字符为 的行(,您需要匹配^(

  1. grep

    grep '^(' file
    
  2. sed

    sed -n '/^(/p' file
    

答案2

使用perl

perl -ne '/^\(/ && print' foo

输出:

(((jfojfojeojfow 
(((jfojfojeojfow

解释(正则表达式部分)

  • /^\(/

    • ^断言字符串开头的位置
    • \(与字符(逐字匹配

答案3

以下是bash一行代码:

while IFS= read -r line; do [[ $line =~ ^\( ]] && echo "$line"; done <file.txt

这里我们读取每一行输入,如果行以 开头(,则打印该行。主要测试由 完成[[ $i =~ ^\( ]]

使用python

#!/usr/bin/env python2
with open('file.txt') as f:
    for line in f:
        if line.startswith('('):
            print line.rstrip()

这里line.startswith('(')检查该行是否以 开头(,如果是,则打印该行。

答案4

你也可以做相反的事情。

grep -v '^[^(]' file

或者

sed '/^[^(]/d' file

相关内容