New to Linux commands.. What syntax would I use to find and replace a string with each line starting with "Data Centre:" Address information that is different on every line" but ends with the word Site: and I need to keep the site details that follow..
Example:
Input.txt
Data Centre: 23 Mulberry lane, Washington Site: 9067 Green
Expected Output
Site: 9067 GreenI've found gsub examples, but gsub is not available on my OS.
Any help appreciated.
Mac
32 Answers
If you use semicolon as field separator, what you want will be in the last field
awk -F ':' '/Site:/ { print "Site: ", $NF }' 6 Here is a sed solution that uses extended regular expressions -r and capture groups ()->\1:
sed -r 's/^Data Centre:.*(Site: .*)$/\1/' Input.txtIf you want to suppress the output of any other lines that could appear in the file:
sed -n -r 's/^Data Centre:.*(Site: .*)$/\1/p' Input.txtAdd the option -i.bak to do the changes and backup file simultaneously, ot redirect the output to new file.