What is sed?
Sed is a stream editor which is used to perform basic text transformations on an input stream (a file or input from a pipeline) or filter strings. It permits to modify the contents of different lines in a file, based on some parameters.
For the examples shown in this article, you used the 4.2.1 version of sed as shown below:
sed --version GNU sed version 4.2.1 Copyright (C) 2009 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, to the extent permitted by law.
Sed has a syntax as follows:
sed [-options] [command] [<file(s)>]
Visualization
For the cases where you need to display the contents of a file or part of it, we can use any of the following commands:
sed 5q file1 # see the firsts 5 lines of file1 cat -n file1 | sed -n '5,6 p' # see lines 5 and 6 of file1 sed -n '1p' file1 > file2 # copy the first line of file1 to file2 sed -n '$p' file1 # show the last line of file1
Replacing strings and characters
In these cases, it is always advisable storing in another file, the results of a substitution, leaving the original file unchanged. Some examples are:
# replace strings in all lines that satisfied the string of file1 and store the result in file2 sed 's/old_string/new_string/g' file1 > file2 # replace strings only in lines 200 y 201 sed '200,201 s/old_string/new_string/g' file1 > file2 # replace several strings by new one sed 's/old_string_1\|old_string_2/new_string/g' file1 > file2 # replace all lowercase to uppercase sed 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' file1 > file2
Insert strings
As in the previous case, the original file is left unchanged while the second will contain the changes.
# insert a string at the beginning of each line sed 's/^/string_at_the_beginning/' file1 >file2 # insert a string at the end of the file sed -e '$ string_at_the_end' file > file2 # insert a blank line before each line that matches with string sed '/string/{x;p;x;}' file1 > file2 # insert a blank line after each line that matches with string sed '/string/G' file1 > file2 # insert a blank line before and other after each line that matches with string sed '/string/{x;p;x;G;}' file1 > file2 # insert a blank line every 2 lines sed 'n;G;' file1 > file2
Delete lines and strings
If we want to delete characters or entire lines, either because they are empty or commented, we can use the following commands:
sed '2,4 d' file1 > file2 # remove lines 100 and 105 of file1 sed '5,20 !d' file1 > file2 # delete all lines except the 5 and 20 sed '$d' file1 > file2 # delete the last line of file1 sed -i '$d' file1 # delete the last line of file1 in the same file sed '/string/ d' file1 > file2 # remove lines that satisfied a string sed '/^$/d' file1 > file2 # remove blank lines sed '/^$/d; / *#/d' file1 > file2 # remove blank lines and bash comments
How to install, update and other things with package managers in Linux?
10 February 2014Package managers are tools to automate the process of installing, upgrading, uninstalling or configuring software on Linux. Package managers are part of the operating system and they use a single database for installation and a single packet format, for example: rpm or deb. They are also responsible for checking the digital signature, and dependency resolution for updates.
In a previous article, we showed the use of some useful commands for manipulating files and directories, in this case, several commands are presented which allow us to collect certain system information. Also, we will see that displaying the content of certain files, can also be a way for giving useful information. Furthermore, the use of session managing commands will be described.
Before starting with the use of some Linux commands, I want to remind the importance of reviewing the reference manual for each command, because this is the place where you can find all the possible options. The reference manual can be displayed on a terminal using the "man" command, for example, if we see the manual of the "man" command in a terminal, we should write "man man" and we would see something like this:
Figure # 1: Linux terminal displaying the manual of the man command.