The obvious way is to match a line, then use the "n" command to read more lines and finally output them with the "p" command (adjust the number of "n"s to match your goal):
Another possibility would be a "range clause": ranges start with a starting regexp and end either with an ending regexp or a line number, which can be absolute (simply a number) or relative to the file position. This is what ".,$ ..." is: from the current line (".") to the end of the file ("$"). The blueprint is:
It is possible in "vi" to use relative line numbers like you did:
but i doubt this is standard BRE (would have to consult the reference, which i haven't access to right now). The above solution is guaranteed to work with every "sed", though.
By the way, check the man page of your "grep". Some versions have the feature you look for: they can match a line and then output a configurable mount of lines before and/or after the match.
Hi all,
I have the following data in a file x.csv:
> ,this is some text here
> ,,,,,,,,,,,,,,,,2006/11/16,0.23
> ,,,,,,,,,,,,,,,,2006/12/16,0.88
< ,,,,,,,,,,,,,,,,this shouldnt be deleted
I need to use SED to match anything with a > in the line and delete that line, can someone help... (7 Replies)
Could any one tell me how to read and match multiple lines in perl? Did this code below still work in this situation?
while (<FILE>) {
if (/ /) {
}
}
Thanks a lot! (5 Replies)
Hi -
I am guessing this is fairly simple for someone .. but I can not quite figure it out. I need a sed command to print just parts of lines from a file.
e.g. filea.txt
4710451 : Success : MODIFY : cn=user1,dc=org,dc=uk
Message log started
Message log ended
4710452 : Success : MODIFY :... (7 Replies)
I'm a bit new to regex and sed/perl stuff, so I would like to ask for some advice. I have tried several variations of scripts I've found on the net, but can't seem to get them to work out just right.
I have a file with the following information...
# Host 1
host 45583 {
filename... (4 Replies)
First of all, I know this can be more eassily done with perl or other scripting languages but, that's not the issue. I need this in sed. (or wander if it's possible )
I got a file (trace file to recreate the control file from oracle for the dba boys)
which contains
some lines
another line... (11 Replies)
Greetings all,
I am trying to match a string, and after that insert a few lines above that match.
The string is "Version 1.0.0". I need to insert a few lines ONLY above the first match (there are many Version numbers in the file). The rest of the matches must be ignored. The lines I need to... (2 Replies)
Hi
Im trying to do the following in sed. I want to delete any blank line at the start of a file until it matches a pattern and then stops. for example:
Input
output:
I have got it to work within a range of two patterns with the following:
sed '/1/,/pattern/{/^]*$/d}'
The... (2 Replies)
Hello,
Could someone help me with sed. I have searched for solution 5 days allready :wall:, but cant find. Unfortunately my "sed" knowledge not good enough to manage it. I have the text:
123, foo1, bar1, short text1, dat1e, stable_pattern
124, foo2, bar2, long text
with few
lines, date,... (4 Replies)
Hi!
Considering below text, how would I use sed to insert text right below the v0005-line, using the SEPARATOR-line as a pattern to search for, so two lines above the separator? I can do it right above the separator, but not 2 lines...
# v0004 - Some text
# v0005 - More text
#... (5 Replies)
Discussion started by: indo1144
5 Replies
LEARN ABOUT CENTOS
lsdiff
LSDIFF(1) Man pages LSDIFF(1)NAME
lsdiff - show which files are modified by a patch
SYNOPSIS
lsdiff [[-n] | [--line-number]] [[-p n] | [--strip-match=n]] [--strip=n] [--addprefix=PREFIX] [[-s] | [--status]] [[-E] |
[--empty-files-as-removed]] [[-i PATTERN] | [--include=PATTERN]] [[-x PATTERN] | [--exclude=PATTERN]] [[-z] | [--decompress]]
[[-# RANGE] | [--hunks=RANGE]] [--lines=RANGE] [--files=RANGE] [[-H] | [--with-filename]] [[-h] | [--no-filename]] [[-v] |
[--verbose]...] [file...]
lsdiff {[--help] | [--version] | [--filter ...] | [--grep ...]}
DESCRIPTION
List the files modified by a patch.
You can use both unified and context format diffs with this program.
OPTIONS -n, --line-number
Display the line number that each patch begins at. If verbose output is requested (using -nv), each hunk of each patch is listed as
well.
For each file that is modified, a line is generated containing the line number of the beginning of the patch, followed by a Tab
character, followed by the name of the file that is modified. If -v is given once, following each of these lines will be one line for
each hunk, consisting of a Tab character, the line number that the hunk begins at, another Tab character, the string "Hunk #", and the
hunk number (starting at 1).
If the -v is given twice in conjunction with -n (i.e. -nvv), the format is slightly different: hunk-level descriptive text is shown
after each hunk number, and the --number-files option is enabled.
--number-files
File numbers are listed, beginning at 1, before each filename.
-# RANGE, --hunks=RANGE
Only list hunks within the specified RANGE. Hunks are numbered from 1, and the range is a comma-separated list of numbers or
"first-last" spans; either the first or the last in the span may be omitted to indicate no limit in that direction.
--lines=RANGE
Only list hunks that contain lines from the original file that lie within the specified RANGE. Lines are numbered from 1, and the range
is a comma-separated list of numbers or "first-last" spans; either the first or the last in the span may be omitted to indicate no
limit in that direction.
--files=RANGE
Only list files indicated by the specified RANGE. Files are numbered from 1 in the order they appear in the patch input, and the range
is a comma-separated list of numbers or "first-last" spans; either the first or the last in the span may be omitted to indicate no
limit in that direction.
-p n, --strip-match=n
When matching, ignore the first n components of the pathname.
--strip=n
Remove the first n components of the pathname before displaying it.
--addprefix=PREFIX
Prefix the pathname with PREFIX before displaying it.
-s, --status
Show file additions, modifications and removals. A file addition is indicated by a "+", a removal by a "-", and a modification by a
"!".
-E, --empty-files-as-removed
Treat empty files as absent for the purpose of displaying file additions, modifications and removals.
-i PATTERN, --include=PATTERN
Include only files matching PATTERN.
-x PATTERN, --exclude=PATTERN
Exclude files matching PATTERN.
-z, --decompress
Decompress files with extensions .gz and .bz2.
-H, --with-filename
Print the name of the patch file containing each patch.
-h, --no-filename
Suppress the name of the patch file containing each patch.
-v, --verbose
Verbose output.
--help
Display a short usage message.
--version
Display the version number of lsdiff.
--filter
Behave like filterdiff(1) instead.
--grep
Behave like grepdiff(1) instead.
SEE ALSO filterdiff(1), grepdiff(1)EXAMPLES
To sort the order of touched files in a patch, you can use:
lsdiff patch | sort -u |
xargs -rn1 filterdiff patch -i
To show only added files in a patch:
lsdiff -s patch | grep '^+' |
cut -c2- | xargs -rn1 filterdiff patch -i
To show the headers of all file hunks:
lsdiff -n patch | (while read n file
do sed -ne "$n,$(($n+1))p" patch
done)
AUTHOR
Tim Waugh <twaugh@redhat.com>
Package maintainer
patchutils 23 Jan 2009 LSDIFF(1)