我有一个包含以下内容的文件:
(((jfojfojeojfow
//
hellow_rld
(((jfojfojeojfow
//
hellow_rld
我如何提取以括号开头的每一行?
答案1
行首的符号是^
。因此,要打印所有首字符为 的行(
,您需要匹配^(
:
grep
grep '^(' file
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