Issue
I have the following pattern in a file
TREE(abc/x73/APPLE) DEST(MYFILE.FILE1A)
TREE(abc/x74/APPLE) DEST(MYFILE88.FILE1A)
TREE(abc/x100/APPLE) DEST(MYFILE100.FILE1B)
TREE(abc/x61/APPLE) DEST(MYFILE1000.FILE1A)
I would like the output to ideally be:
TREE(abc/x73/APPLE) FILE1A
TREE(abc/x74/APPLE) FILE1A
TREE(abc/x100/APPLE) FILE1B
TREE(abc/x61/APPLE) FILE1A
However, I'll be ok with:
TREE(abc/x73/APPLE) DEST(FILE1A)
TREE(abc/x74/APPLE) DEST(FILE1A)
TREE(abc/x100/APPLE) DEST(FILE1B)
TREE(abc/x61/APPLE) DEST(FILE1A)
I've tried variations of
sed 's/\(FILE1A\).*/\1/'
but I just keep getting the same as the input. I'd appreciate any pointers as to where I'm going wrong.
Thanks.
Solution
Does this solve your problem?
cat test.txt
TREE(abc/x73/APPLE) DEST(MYFILE.FILE1A)
TREE(abc/x74/APPLE) DEST(MYFILE88.FILE1A)
TREE(abc/x100/APPLE) DEST(MYFILE100.FILE1B)
TREE(abc/x61/APPLE) DEST(MYFILE1000.FILE1A)
sed -n 's/\(.*)\).*\.\(.*\))/\1\t\2/p' test.txt
TREE(abc/x73/APPLE) FILE1A
TREE(abc/x74/APPLE) FILE1A
TREE(abc/x100/APPLE) FILE1B
TREE(abc/x61/APPLE) FILE1A
Explanation:
-n
option - don't print everything
\(.*)\)
first capture group - everything up to and including the first ")"
\.\(.*\))
second capture group - everything between "." and the last ")"
\1\t\2/p
print the first captured group, then a tab, then the second capture group
Answered By - jared_mamrot Answer Checked By - Marie Seifert (WPSolving Admin)