Issue
I only need to print the line directly before the +- or -- symbol in bash which contains the location of the change. how can I edit this text to do so?
Input:
--- /opt/
/opt/location1:
/opt/location2:
/opt/location3:
+-rw-r--r-- 1 ra
--rwxr-xr-x 1 rt
+-rwxr-xr-x 1 ft
/opt/location4:
/opt/location5:
+-rw-r--r-- 1 dra
--rwxr-xr-x 1 drt
+-rwxr-xr-x 1 dft
output
/opt/location3:
+-rw-r--r-- 1 ra
--rwxr-xr-x 1 rt
+-rwxr-xr-x 1 ft
/opt/location5:
+-rw-r--r-- 1 dra
--rwxr-xr-x 1 drt
+-rwxr-xr-x 1 dft
Solution
You can probably just do grep -B1 '^[+-]-' input
, but the output is not quite what you want. To get the exact output you demonstrate, try:
awk '/^[+-]-/ && NR > 1{if(p) print prev; p=0; print; next} { p=1; prev = $0}' input
Answered By - William Pursell Answer Checked By - Willingham (WPSolving Volunteer)