use*_*326 19 regex grep sed text-processing
我有一个包含以下内容的文件:
(((jfojfojeojfow
//
hellow_rld
(((jfojfojeojfow
//
hellow_rld
Run Code Online (Sandbox Code Playgroud)
如何提取以括号开头的每一行?
ter*_*don 40
行首的符号是^。因此,要打印第一个字符为 a 的所有行(,您需要匹配^(:
grep
grep '^(' file
Run Code Online (Sandbox Code Playgroud)sed
sed -n '/^(/p' file
Run Code Online (Sandbox Code Playgroud)使用 perl
perl -ne '/^\(/ && print' foo
Run Code Online (Sandbox Code Playgroud)
输出:
(((jfojfojeojfow
(((jfojfojeojfow
Run Code Online (Sandbox Code Playgroud)
说明(正则部分)
/^\(/
^ 在字符串的开头断言位置\((字面上匹配字符这是一个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('(')检查该行是否以 开头(,如果是,则打印该行。
为此,请使用 grep 命令。假设包含上述内容的文件名为 t.txt:
user:~$ grep '^(' t.txt
(((jfojfojeojfow
(((jfojfojeojfow
Run Code Online (Sandbox Code Playgroud)
使用“--color”作为进一步的参数,您甚至可以在终端中看到匹配的颜色。该指令也不匹配空行。