Ask Ubuntu is a question and answer site for Ubuntu users and developers. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

My string look like this..


I want to pipe for output as


Delete all characters after a first < found each line.

share|improve this question
Tried splitting the string by line, then by < and just outputting the first element per line? – user98085 Dec 25 '12 at 13:11
@Lekensteyn I would appreciate if you help me to solve it with sed, I really want to know that one.. Thanks in advance. – Smile.Hunter Dec 26 '12 at 18:12
up vote 5 down vote accepted

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/<.*//'

sed uses regular expressions, the relevant manual page text for sed(1) that applies to the above command:

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 1st 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}'
share|improve this answer


cat textWithFooBar.txt | cut -d '<' -f 1 > output.txt

share|improve this answer
Perfect use for cut except for the "Useless use of cat" -- cut -d '<' -f 1 < textWithFooBar.txt > output.txt – glenn jackman Dec 25 '12 at 17:05

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.