Grep 行首

use*_*326 19 regex grep sed text-processing

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

(((jfojfojeojfow 
//
hellow_rld
(((jfojfojeojfow
//
hellow_rld
Run Code Online (Sandbox Code Playgroud)

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

ter*_*don 40

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

  1. grep

    grep '^(' file
    
    Run Code Online (Sandbox Code Playgroud)
  2. sed

    sed -n '/^(/p' file
    
    Run Code Online (Sandbox Code Playgroud)


A.B*_*.B. 7

使用 perl

perl -ne '/^\(/ && print' foo
Run Code Online (Sandbox Code Playgroud)

输出:

(((jfojfojeojfow 
(((jfojfojeojfow
Run Code Online (Sandbox Code Playgroud)

说明(正则部分)

  • /^\(/

    • ^ 在字符串的开头断言位置
    • \((字面上匹配字符


hee*_*ayl 5

这是一个bash单班轮:

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

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

使用python

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

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


the*_*ler 3

为此,请使用 grep 命令。假设包含上述内容的文件名为 t.txt:

user:~$ grep '^(' t.txt
(((jfojfojeojfow
(((jfojfojeojfow
Run Code Online (Sandbox Code Playgroud)

使用“--color”作为进一步的参数,您甚至可以在终端中看到匹配的颜色。该指令也不匹配空行。