Grep beginning of line
Solution 1
The symbol for the beginning of a line is ^
. So, to print all lines whose first character is a (
, you would want to match ^(
:
grep
grep '^(' file
sed
sed -n '/^(/p' file
Solution 2
Using perl
perl -ne '/^\(/ && print' foo
Output:
(((jfojfojeojfow
(((jfojfojeojfow
Explanation (regex part)
/^\(/
^
assert position at start of the string\(
matches the character(
literally
Solution 3
Here is a bash
one liner:
while IFS= read -r line; do [[ $line =~ ^\( ]] && echo "$line"; done <file.txt
Here we are reading each line of input and if the line starts with (
, the line is printed. The main test is done by [[ $i =~ ^\( ]]
.
Using python
:
#!/usr/bin/env python2
with open('file.txt') as f:
for line in f:
if line.startswith('('):
print line.rstrip()
Here line.startswith('(')
checks if the line starts with (
, if so then the line is printed.
Solution 4
awk
awk '/^\(/' testfile.txt
Result
$ awk '/^\(/' testfile.txt
(((jfojfojeojfow
(((jfojfojeojfow
Python
As python one-liner:
$ python -c 'import sys;print "\n".join([x.strip() for x in sys.stdin.readlines() if x.startswith("(")])' < input.txt
(((jfojfojeojfow
(((jfojfojeojfow
Or alternatively:
$ python -c 'import sys,re;[sys.stdout.write(x) for x in open(sys.argv[1]) if re.search("^\(",x)]' input.txt
BSD look
look
is one of the classic but little known Unix utilities, which appeared way back in AT&T Unix version 7. From man look
:
The look utility displays any lines in file which contain string as a prefix
The result:
$ look "(" input.txt
(((jfojfojeojfow
(((jfojfojeojfow
Solution 5
You may do the inverse.
grep -v '^[^(]' file
or
sed '/^[^(]/d' file
Related videos on Youtube
user3069326
Updated on September 18, 2022Comments
-
user3069326 over 1 year
I have a file with the following contents:
(((jfojfojeojfow // hellow_rld (((jfojfojeojfow // hellow_rld
How can I extract every line that starts with a parenthesis?
-
A.B. almost 9 yearsIf the input file contains empty lines, the blank lines are also displayed.
-
thedler almost 9 yearsYes. Missed the '^' character to start the match at the beginning of the line. Sorry for that.