How to grep a string after a specified line number?
You can tail it, then grep:
tail -n +50000 myfile.txt | grep -in "time spent"
How to grep out specific line ranges of a file
Try using sed as mentioned on
http://linuxcommando.blogspot.com/2008/03/using-sed-to-extract-lines-in-text-file.html. For example use
sed '2,4!d' somefile.txt
to print from the second line to the fourth line of somefile.txt
. (And don't forget to check http://www.grymoire.com/Unix/Sed.html, sed is a wonderful tool.)
Find the line number where a specific word appears with grep
Use grep -n
to get the line number of a match.
I don't think there's a way to get grep to start on a certain line number. For that, use sed. For example, to start at line 10 and print the line number and line for matching lines, use:
sed -n '10,$ { /regex/ { =; p; } }' file
To get only the line numbers, you could use
grep -n 'regex' | sed 's/^\([0-9]\+\):.*$/\1/'
Or you could simply use sed:
sed -n '/regex/=' file
Combining the two sed commands, you get:
sed -n '10,$ { /regex/= }' file
How to grep for contents after pattern?
grep 'potato:' file.txt | sed 's/^.*: //'
grep
looks for any line that contains the string potato:
, then, for each of these lines, sed
replaces (s///
- substitute) any character (.*
) from the beginning of the line (^
) until the last occurrence of the sequence :
(colon followed by space) with the empty string (s/...//
- substitute the first part with the second part, which is empty).
or
grep 'potato:' file.txt | cut -d\ -f2
For each line that contains potato:
, cut
will split the line into multiple fields delimited by space (-d\
- d
= delimiter, \
= escaped space character, something like -d" "
would have also worked) and print the second field of each such line (-f2
).
or
grep 'potato:' file.txt | awk '{print $2}'
For each line that contains potato:
, awk
will print the second field (print $2
) which is delimited by default by spaces.
or
grep 'potato:' file.txt | perl -e 'for(<>){s/^.*: //;print}'
All lines that contain potato:
are sent to an inline (-e
) Perl script that takes all lines from stdin
, then, for each of these lines, does the same substitution as in the first example above, then prints it.
or
awk '{if(/potato:/) print $2}' < file.txt
The file is sent via stdin
(< file.txt
sends the contents of the file via stdin
to the command on the left) to an awk
script that, for each line that contains potato:
(if(/potato:/)
returns true if the regular expression /potato:/
matches the current line), prints the second field, as described above.
or
perl -e 'for(<>){/potato:/ && s/^.*: // && print}' < file.txt
The file is sent via stdin
(< file.txt
, see above) to a Perl script that works similarly to the one above, but this time it also makes sure each line contains the string potato:
(/potato:/
is a regular expression that matches if the current line contains potato:
, and, if it does (&&
), then proceeds to apply the regular expression described above and prints the result).
Use grep to report back only line numbers
try:
grep -n "text to find" file.ext | cut -f1 -d:
Related Topics
Mongodb Data Directory /Data/Db Not Found
Abuse Curl to Communicate with Redis
What's the Difference Between "Env" and "Set" (On MAC Os X or Linux)
How to Create Virtual Ethernet Devices in Linux
Using Iconv to Convert from Utf-16Le to Utf-8
Writing to Serial Port from Linux Command Line
Differencebetween Xterm-Color & Xterm-256Color
What Does Anon-Rss and Total-Vm Mean
Permanently Change Disassembly Flavor in Gdb
How to Find All Files with a Filename That Ends with Tilde
Linux Rename Files to Uppercase
Create a Static Haskell Linux Executable
Explanation of Convertor of Cidr to Netmask in Linux Shell Netmask2Cdir and Cdir2Netmask