I would like replace all the rows in a file if a row has an exact match to number say 21 in a tab delimited file. I want to delete the row only if it has 21 any of the rows but it should not delecte the row that has 542178 or 563421.
I tried this
but it is not working. Please let me know what I am missing here.
In your sample input, the value you're looking for only appears in the last field.
Here are a couple of awk scripts. The first script only looks for the desired value in the last field of each input line; the second script looks for the desired value in any filed:
If you want to try this on a Solaris/SunOS System, use /usr/xpg4/bin/awk, /usr/xpg6/bin/awk, or nawk instead of the default /usr/bin/awk. This script was tested using a Korn shell, but will also work with any other shell that recognizes basic POSIX shell syntax (such as bash).
If you make the above script an executable file named tester and the file named file contains your sample input:
the output produced by executing either of the commands:
will be:
and the command:
will produce the output:
it will also work fine for your data, means required value is at last column.
Don, please correct me if my assumption was wrong.
Your assumption is correct if the fields are delimited by spaces (as was shown in the sample input). But, the text describing the input said the fields were tab delimited.
With a version of sed that adheres to the POSIX requirements, that would be:
where <tab> is replaced by a literal tab character. Some versions of sed also recognize \t as a way to specify a tab character in a sed address expression, but that behavior is not portable. To delete any line containing 21 as the value in any (space delimited) field on a line, you could use something like:
where the 1st command deletes 21 on a line by itself, the 2nd deletes lines with 21 as the 1st field, the 3rd deletes lines with 21 as the last field, and the 4th deletes lines with 21 as a field other than the 1st and last fields.
I find the awk script easier to understand even though it is longer than the sed script; but that is just a personal preference. And, the awk script works with any combination of spaces and tabs as delimiters. An equivalent sed script would be:
where each occurrence of <tab> is replaced by a literal tab character.
I am trying to create a cronjob that will run on startup that will look at a list.txt file to see if there is a later version of a database using database.txt as the source. The matching lines are written to output.
$1 in database.txt will be in list.txt as a partial match. $2 of database.txt... (2 Replies)
I have a workaround to the problem i m posting, however if someone wants to look at my query and respond ... i will appreciate.
This is in reference to this thread -> https://www.unix.com/shell-programming-and-scripting/267630-extract-between-two-exact-matched-strings.html
I have data.txt as... (11 Replies)
I am trying to replace exact word from my text. I know using the angled brackets does the trick. But it is not working when there is a dot in the text.
echo "Bottle BottleWater Bottle Can" | sed 's/\<Bottle\>//g'
BottleWater CanBut if my data has a dot or hash in it, it replaces all the... (10 Replies)
This post was previously mistaken for homework, but is actually a small piece of what I working on at work. Please answer if you can.
QUESTION1
How do you grep only an exact string. I am using Solaris10 and do not have any GNU products installed.
Contents of car.txt
CAR1_KEY0
CAR1_KEY1... (2 Replies)
This was mistaken as homework in a different forum, but is not. These are questions that are close to what I am trying to do at work.
QUESTION1:
How do you grep only an exact string. I am using Solaris10 and do not have any GNU products installed.
Contents of car.txt
CAR1_KEY0
CAR1_KEY1... (1 Reply)
Lets say I have file.txt:
(Product:Price:QuantityAvailable) (: as delimiter)
Chocolate:5:5
Banana:33:3
I am doing a edit/update function.
I want to change the Quantity Available, so I tried using the SED command to replace 5, but my Price which is also 5 is changed instead.
(for the Banana... (13 Replies)
I am trying to match a pattern exactly in a shell script. I have tried two methods
awk '/\<mpath${CURR_MP}\>/{print $1 $2}' multipath
perl -ne '/\bmpath${CURR_MP}\b/ and print' /var/tmp/multipath
Both these methods require that I use the escape character. I am guessing that is why... (8 Replies)
Dear Friends,
Anybody knows how to match exact lines only in multilinear.
Input file:
apple
orange
orange
apple
apple
orange
Desired output:
fruit
orange
apple
fruit
i used the command (1 Reply)
Hi,
Can anyone help me with the text editing I need here. I have a file that contains the following lines for example: (line numbers are for illustration only)
1 Hello world fantasy.
2 Hello worldfuntastic.
3 Hello world wonderful.
I would like to get all those lines of text that... (5 Replies)