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 Green I'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 }' 6Here is a sed solution that uses extended regular expressions -r and capture groups ()->\1:
sed -r 's/^Data Centre:.*(Site: .*)$/\1/' Input.txt If 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.txt Add the option -i.bak to do the changes and backup file simultaneously, ot redirect the output to new file.