Issue
I have a text file with a random number of lines. Lines look like this:
neededLine [text1] sometext [text2] sometext [text3]
sometext [text4] sometext [text5] sometext [text6]
neededLine [text7] sometext [text8] sometext [text9]
I have a grep command in shell, which takes lines with 'neededLine' word, and then extracts everything inside brackets.
Command looks like this:
grep 'neededLine' |grep -Po '(?<=\[).*?(?=\])' | tr '\n' ' '
So my output looks like this:
text1 text2 text3 text7 text8 text9
If I remove tr
, output starts with a new line for every single word:
text1
text2
text3
...
How do I get an output, which prints the result in one separate line for every single input line? It should look like
text1 text2 text3
text7 text8 text9
Solution
With sed:
sed '/neededLine/!d
s/[^[]*\[//
s/\][^[]*$//
s/\][^[]*\[/ /g' file
Answered By - oguz ismail