Bash-remove-n-match: Difference between revisions
		
		
		
		
		
		Jump to navigation
		Jump to search
		
				
		
		
	
 (Created page with "Really unique problem and resolution using awk found in reddit. [https://www.reddit.com/r/bash/comments/qva5bm/delete_n_occurrence_of_a_pattern/?%24deep_link=true&correlation_...")  | 
				mNo edit summary  | 
				||
| (One intermediate revision by the same user not shown) | |||
| Line 4: | Line 4: | ||
<pre>  | <pre>  | ||
input text1.txt:  | input text1.txt has:  | ||
hi 1  | hi 1  | ||
hi 2  | hi 2  | ||
| Line 23: | Line 23: | ||
awk '!/hi/||++n>4'  | awk '!/hi/||++n>4'  | ||
</pre>  | </pre>  | ||
Possible alternate that would still require some work:  | |||
<pre>  | |||
count=4 awk -e '  | |||
    /hi [[:digit:]]+/ && s++ < ENVIRON["count"] { next };  | |||
    {print};  | |||
' << EOT   | |||
hi 1  | |||
hi 2  | |||
hi 3  | |||
hi 4  | |||
hi 5  | |||
hello  | |||
EOT  | |||
</pre>  | |||
[[Category:Bash]]  | |||
Latest revision as of 18:25, 17 May 2023
Really unique problem and resolution using awk found in reddit. [1]
input text1.txt has: hi 1 hi 2 hi 3 hi 4 hi 5 hello I want to delete 4 lines containing 'hi' wanted output: hi 5 hello
Unique answer:
awk '!/hi/||++n>4'
Possible alternate that would still require some work:
count=4 awk -e '
    /hi [[:digit:]]+/ && s++ < ENVIRON["count"] { next };
    {print};
' << EOT 
hi 1
hi 2
hi 3
hi 4
hi 5
hello
EOT