I have a large file and many lines are duplicated. I'm trying to delete lines with every second occurrence of a pattern. Did tried searching similar question but no luck.
I can delete all lines matching pattern with :g/pattern/d but don't want to lose data.
Sample pattern to delete John-------Doe
Last edited by rbatte1; 03-26-2015 at 01:43 PM..
Reason: Added ICODE tags
If there is any chance that the duplicated lines won't be adjacent, awk may be a much better tool for this than vi.
In addition to the misspelling on the last input line; why shouldn't the header line appear in the output? Assuming you do want to keep the header, you could try something like:
which, with your sample input, updates your input file to be:
If you want to try this on a Solaris/SunOS system, change awk to /usr/xpg4/bin/awk or nawk.
This User Gave Thanks to Don Cragun For This Post:
Just a quick note - you can run Don's awk script inside the vi/vim editor.
Essentially, you can run any command of the OS on which your vi/vim editor was installed.
"%" ==> set the entire file as the range on which the awk command will run
"!" ==> run the command of the underlying OS.
"awk 'f[$0]++ == 0' ==> the actual OS command; the "input_file" isn't required here
Once you hit Enter, your duplicate data will be removed within the editor window itself. You can then simply save it. This obviates the need for the temp file.
Just a quick note - you can run Don's awk script inside the vi/vim editor.
Essentially, you can run any command of the OS on which your vi/vim editor was installed.
"%" ==> set the entire file as the range on which the awk command will run
"!" ==> run the command of the underlying OS.
"awk 'f[$0]++ == 0' ==> the actual OS command; the "input_file" isn't required here
Once you hit Enter, your duplicate data will be removed within the editor window itself. You can then simply save it. This obviates the need for the temp file.
If you're in the editor to make other changes to the file anyway, this is a great idea. But, it doesn't get rid of the need for a temp file; it just has vi create the temp file instead of the user creating it explicitly. In fact, there is a good chance that vi (or vim) will create another temp file or two to process the input and output for awk.
Hello.
Here is a file contents :
declare -Ax NEW_FORCE_IGNORE_ARRAY=(="§" ="§" ="§" ="§" ="§" .................. ="§"Here is a pattern
=I want to extract 'NEW_FORCE_IGNORE_ARRAY' which is the whole word before the first occurrence of pattern '='
Is there a better solution than mine :... (3 Replies)
Hello,
Environment:
I am under Ubuntu 18.04 bionic. I have an sql file consisting of 10K lines.
Objective:
What I am trying to attain is to remove everything coming after 2nd tab in each line. While searching for the answer, I found two answers and both gave expected result just for the first... (2 Replies)
Hi,
I have a simple problem but i guess stupid enough to figure it out. i have thousands rows of data. and i need to find match patterns of two columns and print the number of rows. for example:
inputfile
abd abp 123
abc abc 325
ndc ndc 451
mjk lkj... (3 Replies)
here is what i want to achieve.. i have a file with below contents
cat fileName
blah blah blah
.
.DROP this
REJECT that
.
--sport 7800 -j REJECT --reject-with icmp-port-unreachable
--dport 7800 -j REJECT --reject-with icmp-port-unreachable
.
.
.
more blah blah blah
--dport 3306... (14 Replies)
Hi
I have to replace a pattern found in the first uncommented line in a file. The challenge I'm facing is there are several such similar lines but I have to edit only the first uncommented line.
Eg:
#this is example
#/root/xyz:Old_Pattern
/root/xyz:Old_Pattern
/root/xyz:Old_Pattern
... (10 Replies)
hi all
i want to delete a line upto a particular character. here is example.
cp cms/images/wifi-zone.png
i want to delete the line till . (cp cms/images/wifi-zone.) so the output wud be "png" only
how can i do it?
also please note down that dot (.) can also occur multiple... (12 Replies)
I have a file that will sometimes contain a pattern. The pattern is this:
FRM CHK 0000
I want to find any lines with this pattern, delete those lines, and also delete the line above and the line below. (4 Replies)
I have a file that will sometimes contain a pattern. The pattern is this:
W/D FRM CHK 00
I want to find any lines with this pattern, delete those lines, and also delete the line above and the line below. (1 Reply)
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)
Hi
I need a perl onliner which seaches a line starting with a pattern(last occurence) and display it.
similar to
grep 'pattern' filename | tail -1 in UNIX
Ex: I want to display the line starting with "cool" and which is a last occurence
adadfadafadf
adfadadf
cool dfadfadfadfara... (4 Replies)