This definitely helps. I like it very much when someone takes the time to explain the solution, so that it can be applied elsewhere with ease. Thanks a lot!
You are welcome. In fact, as you can see below, i have learned from this as much, which is why i greatly enjoy it to come here.
First off, i think we have a confusion about the terms "function" and "command". For me, a "command" is a single command, like the "s" (substitute) or the "y", along with everything which is needed to execute it. "s/x/y/p" would be an example for such a command. "function" is what below is called "block of commands". This just to better explain my previous posts.
But probably we should agree to use "commands" and "block of commands" like in the sed man page.
Quote:
Originally Posted by Don Cragun
Check your local sed(1) man page...
My (GNU-sed) man page says the following:
Quote:
This means, IMHO, that
is a correct command, because the command is "{ .... }" (="block of commands"). As there is no exception given which forbids "{ ... }" to appear inside another block of commands it follows that this can be nested.
I suppose there will be some practical limit of such nesting but as far as the standard goes there is none AFAICS. I haven't checked the AIX man page yet, but will do so as soon as i get back to the office.
Btw.: this is a very interesting discussion and i am glad i still can learn something new every time i come here.
Hi,
I have a log file which shows the files which has been changed over the last week.
They follow this pattern:
old_file_version_number@@new_file_version_number
Now I need to know how to delete from each line parts starting from @@.
I would be issuing the command inside vi(m).
So... (5 Replies)
Hi,
I have file 1.txt with following entries as shown:
0152364|134444|10.20.30.40|015236433
0233654|122555|10.20.30.50|023365433
**
**
**
In file 2.txt I have the following entries as shown:
0152364|134444|10.20.30.40|015236433
0233654|122555|10.20.30.50|023365433... (4 Replies)
trying to use sed in finding a matching pattern in a file then deleting
the next line only .. pattern --> <ad-content>
I tried this but it results are not what I wish
sed '/<ad-content>/{N;d;}' akv.xml > akv5.xml
ex,
<Celebrant2First>Mickey</Celebrant2First>
<ad-content>
Minnie... (2 Replies)
All,
I have the following file:
--------------------------------------
#
# /etc/pam.d/common-password - password-related modules common to all services
#
# This file is included from other service-specific PAM config files,
# and should contain a list of modules that define the services... (2 Replies)
Hi guys,
got a problem here with sed on the command line.
If i have a string as below:
online xx:wer:xcv: sdf:/asdf/http:https-asdfd
How can i match the pattern "http:" and replace the start of the string to the pattern with null?
I tried the following but it doesn't work:
... (3 Replies)
I couldn't figure out how to use sed or any other shell to do the following. Can anyone help? Thanks.
If seeing a string (e.g., TODAY) in the line,
replace a string in the line above (e.g, replace "Raining" with "Sunny")
and replace a string in the line below (e.g., replace "Reading" with... (7 Replies)
Can someone please assist me, I'm trying to get vi to remove all the occurences of the text in a file i.e. "DEVICE=/dev/mt??". The "??" represents a number variable. Is there a globel search and delete command that I can use?
Thank You in Advance. (3 Replies)
Hi I just wanted to add a new line after every matching pattern:
The method doing this doesn't matter, however, I have been using sed and this is what I tried doing, knowing that I am a bit off:
sed 'Wf a\'/n'/g'
Basically, I want to add a new line after occurrence of Wf. After the line Wf... (5 Replies)
Dear Unix Forums,
I am hoping you can help me with a pattern matching problem.
What am I trying to do?
I want to replace multiple lines of a text file (that match a multi-line pattern) with a single line of text. These patterns can span several lines and do not always have the same number of... (10 Replies)
'Hi
I'm using the following code to extract the lines(and redirect them to a txt file) after the pattern match. But the output is inclusive of the line with pattern match.
Which option is to be used to exclude the line containing the pattern?
sed -n '/Conn.*User/,$p' > consumers.txt (11 Replies)
Discussion started by: essem
11 Replies
LEARN ABOUT FREEBSD
csplit
CSPLIT(1) BSD General Commands Manual CSPLIT(1)NAME
csplit -- split files based on context
SYNOPSIS
csplit [-ks] [-f prefix] [-n number] file args ...
DESCRIPTION
The csplit utility splits file into pieces using the patterns args. If file is a dash ('-'), csplit reads from standard input.
Files are created with a prefix of ``xx'' and two decimal digits. The size of each file is written to standard output as it is created. If
an error occurs whilst files are being created, or a HUP, INT, or TERM signal is received, all files previously written are removed.
The options are as follows:
-f prefix
Create file names beginning with prefix, instead of ``xx''.
-k Do not remove previously created files if an error occurs or a HUP, INT, or TERM signal is received.
-n number
Create file names beginning with number of decimal digits after the prefix, instead of 2.
-s Do not write the size of each output file to standard output as it is created.
The args operands may be a combination of the following patterns:
/regexp/[[+|-]offset]
Create a file containing the input from the current line to (but not including) the next line matching the given basic regular
expression. An optional offset from the line that matched may be specified.
%regexp%[[+|-]offset]
Same as above but a file is not created for the output.
line_no
Create containing the input from the current line to (but not including) the specified line number.
{num} Repeat the previous pattern the specified number of times. If it follows a line number pattern, a new file will be created for each
line_no lines, num times. The first line of the file is line number 1 for historic reasons.
After all the patterns have been processed, the remaining input data (if there is any) will be written to a new file.
Requesting to split at a line before the current line number or past the end of the file will result in an error.
ENVIRONMENT
The LANG, LC_ALL, LC_COLLATE and LC_CTYPE environment variables affect the execution of csplit as described in environ(7).
EXIT STATUS
The csplit utility exits 0 on success, and >0 if an error occurs.
EXAMPLES
Split the mdoc(7) file foo.1 into one file for each section (up to 21 plus one for the rest, if any):
csplit -k foo.1 '%^.Sh%' '/^.Sh/' '{20}'
Split standard input after the first 99 lines and every 100 lines thereafter:
csplit -k - 100 '{19}'
SEE ALSO sed(1), split(1), re_format(7)STANDARDS
The csplit utility conforms to IEEE Std 1003.1-2001 (``POSIX.1'').
HISTORY
A csplit command appeared in PWB UNIX.
BUGS
Input lines are limited to LINE_MAX (2048) bytes in length.
BSD February 6, 2014 BSD