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?
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?
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
Using perl
perl -ne '/^\(/ && print' foo
Output:
(((jfojfojeojfow
(((jfojfojeojfow
Explanation (regex part)
/^\(/
^ assert position at start of the string\( matches the character ( literallyawk '/^\(/' testfile.txt
Result
$ awk '/^\(/' testfile.txt
(((jfojfojeojfow
(((jfojfojeojfow
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
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
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.
Use the grep command for this. Assuming the file with the mentioned content is called t.txt:
user:~$ grep '^(' t.txt
(((jfojfojeojfow
(((jfojfojeojfow
With '--color' as further argument you can even see in color in the terminal what matches. This instruction also do not match empty lines.