My string look like this..
foo<..............................
bar</............................
I want to pipe for output as
foo
bar
Delete all characters after a first <
found each line.
My string look like this..
foo<..............................
bar</............................
I want to pipe for output as
foo
bar
Delete all characters after a first <
found each line.
This is basic sed. Using sed is not difficult once you know regular expressions. A basic sed
command for reading the input and stripping every <
and the following part if it exist, then printing the line (may be modified):
$ echo 'foo<....' | sed 's/<.*//'
foo
sed
uses regular expressions, the relevant manual page text for sed(1)
that applies to the above command:
s/regexp/replacement/
Attempt to match regexp against the pattern space. If successful, replace that portion matched with replacement. The replacement may contain the special character & to refer to that portion of the pattern space which matched, and the special escapes 1 through 9 to refer to the corresponding matching sub-expressions in the regexp
Alternative using cut
(manual page for cut(1)
), "split the string by <
and take the 1
st field.
echo 'foo<....' | cut -d'<' -f1
Alternative using grep
, "match only everything containing characters of the set a to z (case insensitive)" (manual page of grep(1)
):
echo 'foo<....' | grep -io '[a-z]*'
(note: I took the liberty to use [a-z]*
, meaning "zero or more occurrences of a letter", because grep won't return an empty line when using the -o
option)
Alternative using awk, using the same idea of cut
(manual page of awk(1)
):
echo 'foo<....' | awk -F '<' '{print $1}'