to check if a line before and after a string empty

perl check if string is empty or null
how to check if string contains only spaces in java
check if a string is only spaces
check if string only contains spaces python
how to check if a string is only spaces python
javascript check if string is just whitespace
swift string interpolation
python string multiple lines

I need to delete certain numbers of line before a desired text but only if a line before and after searched string is empty.

E.g (line number, content)

1    
2
3 Hello
4
5 yellow

in this case, if lines before and after line containing Hello are empty (line 2 and 4), i have to delete lines from 3 to 1.

I can delete lines from 3 to 1 using tac and sed command but m having difficulty in putting tht if condition.

tac file1|sed -e '/Hello/,+3d'|tac

Could you please try following if you are ok with awk.

awk -v string="Hello" '
FNR==NR{
  a[FNR]=$0
  next
}
($0==string) && a[FNR-1]=="" && a[FNR+1]==""{
  a[FNR-1]=a[FNR]=a[FNR-2]="del_flag"
}
END{
  for(i=1;i<=length(a);i++){
    if(a[i]!="del_flag"){
      print a[i]
    }
  }
}
'  Input_file  Input_file

Theorem Proving in Higher Order Logics: 12th International , In general we can assume nothing about the names of variables before and after the call. We first check that the string “EMPTY CLAUSE DERIVED” occurs in the Each Gandalf proof line contains exactly one proof step followed by an  Now there is one more tiny issue: it seems that if there is a 2nd blank line right after the 1st one, your awk command doesn't see it and will continue to print the lines after the blank double-lines. This happens only for the lines after STRING, it seems that the command doesn't count the 2nd blank line if it is right after the 1st.

This might work for you (GNU sed):

 sed ':a;N;s/\n/&/3;Ta;/\n\n.*Hello.*\n$/s/.*\n//;ta;P;D' file      

Gather up 4 lines in the pattern space and if the 2nd and the 4th are empty and the 3rd contains Hello, delete the first three lines and repeat. Otherwise print the first line and repeat.

.NET & XML: Understanding the Code and Markup Behind the Wizards, ReadLine( ); As each line is read, you need to check to see if it's null or empty. the end of the file, as you're only interested in lines with content: if (line != string  Given two strings str1 and str2, find if str1 is a subsequence of str2. A subsequence is a sequence that can be derived from another sequence by deleting some elements without changing the order of the remaining elements (source: wiki).

With GNU sed option -z you can match

some_line
empty line
line With Hello
empty line

and replace this with an empty line.

sed -rz 's/(^|\n)[^\n]*\n\nHello\n\n/\1\n/g' file1

EDIT: added g for multiple segments.

Randal Schwartz's Perls of Wisdom, David Schwartz. In line 40, we check the result of that multiway test. If @​search_fields is empty, it's the signal that this line is noisy, and we can skip it. through the clever use oflowercasing the value of $_ before doing the lookup. Occasionally, when the same search string is used (or repeated), we'll get multiple hits. This Python program includes three new methods: between, before and after. We internally call find() and rfind(). These methods return -1 when nothing is found. And: We use the indexes returned by find() and rfind to get the indexes of the desired string slice. Substring. Finally: We use the string slice syntax in Python to get substrings of the strings. We thus get substrings relative to other substrings.

Pro MERN Stack: Full Stack Web App Development with Mongo, , What happens if we don't convert a null value in a string field to an empty the line that checks for null and assigns an empty string for the description field. validated (for example, check if the completion date is not before today), it has to be  To print the lines before the matched line use the -B option with grep command. The syntax and the example are shown below: Syntax: grep -Bn "pattern" filename Example: > grep -B1 "ubuntu" sample.dat debian system ubuntu host 4. Print lines before and after match We can print both the lines above and below the matched line.

Easiest way to check if current line is "empty" (ignoring whitespace , (defun blank-line-p (&optional pos) "Returns `t' if line (optionally, line at POS) is string-match-p returned the index of the next line whenever the current line current-indentation gives you the column following leading blanks, which can be​  Select-String also has a Context parameter which accepts an array of one or two numbers specifying the number of lines before and after a match that should be captured. All text parsing techniques in this post can be used to parse information from the context lines.

Strings and Characters, Find out whether a String value is empty by checking its Boolean isEmpty property: In the code above, concatenating badStart with end produces a two-​line  Both these string functions are available in SQL Server, Oracle, MySQL and Microsoft Access. The syntax for the functions are as follows: LTRIM(String) RTRIM(String) The String parameter that is passed to the functions can be a column name, a variable, a literal string or the output of a user defined function or scalar query.

Comments
  • Do you have to use sed? This would be easier to do with awk.
  • Do you have GNU sed 4.4 ? The new option -z can help.
  • @WalterA How does -z help with this?
  • sed '1 N;N;N;N;{s/\n\nHello\n\n/\n/}' file might work (if you have a GNU sed).
  • StackOverflow is not a free coding service. You're expected to try to solve the problem first. Please update your question to show what you have already tried in a minimal reproducible example. For further information, please see How to Ask, and take the tour :)
  • With an input file like printf "%s\n" "one" "two" "" "Hello" "" "Hello" "" "yellow" (two lines with hello and an overlapping empty line) both Hello's are deleted. The specs are unclear, maybe better, maybe worse than the two sed solutions.
  • @WalterA, I considered samples from OP and created this, I am in cab as of now so couldn't test your provided sample, will check it once in home but not sure of OP's Input_file is same or not.
  • :a;ta; - is that t a doing there something? This looks almost like endless loop.
  • @KamilCuk Ah! It's a bit of cruft left over from my testing. BTW it just resets the t flag set to true when a substitution has taken place. I noticed that when using the D command the flag is not reset at the beginning of cycle and so apply belt and braces when using them before testing. In this case the ta command resets the flag anyway and allows the remaining line in the pattern space to be included in the next cycle.
  • The documentation I found says that -z is for using a null byte as the line separator, instead of newline. It has nothing to do with empty lines.
  • @Barmar With -z you can match 2 empty lines with (^|\n)\n\n. Without -z sed is line oriented (match one empty line with ^$, and you need advanced @potong magic for two empty lines in a row).
  • I see, you're just treating the entire input as a single line, since there's no null byte anywhere. Don't you need the g modifier to match multiple times?