Grep for part of a words in a column

New Contributor II

Hey all!

I am trying to get part of a line that prints out when I echo is in terminal.

currently it prints link this,

I would like it to print like this,

I've tried awk print but it counts the whole line as one column.

I've tried to grep -v returned:
but I end up with nothing

I've tried tr -d returned:
and I get firs.las
basically it is removing those letters from everywhere in the printout period and not just in that order or that word.

how can I do this?

Note: first.last is just an example. This will be an employee name.


Honored Contributor II
Honored Contributor II

You really do want to use awk for this. Use grep to return the entire line of a page or file that contains something you want to match. Use awk to divide a line into parts and then choose which part you want to return.

What you need to include is a delimiter (also known as a "field separator" and represented as the -F option) in your awk statement. A delimiter acts like a column divider — think of a comma in a CSV file as the column divider.

The syntax is:
/usr/bin/awk -F : '{ print $2 }'

After the awk command, add the -F option followed by whatever character or string of characters you want to use as your delimiter. In this case, it's the colon : . The colon is separating column 1 returned and column 2 first.last.

The number in the '{ print $2 }' piece of the command says which column you want to return.

The full command would look something like:
echo returned:first.last | /usr/bin/awk -F : '{ print $2 }'

Honored Contributor

Can you give sample output?

% string="returned:first.last"
% echo "${string}"
% awk -F: '{ print $2 }' <<< "${string}"

I had to use a herestring for this but you could pipe to it probably. I just don't know what your output looks like. In awk you can specify a field separator with -F which is what I am doing

% echo "${string}" | cut -d ":" -f 2

The same thing in cut you can set the "delimiter" with -d and then pick which field you want with -f

also shell does this with built-ins if you want to get extra gray beard

% echo "${string#*:*}"