regex - How to group strings with whitespace, using sed? -
suppose text file following strings:
apple foo foobar banana foo foobar1 abc b c orange barfoo pear foo how group strings comes after apple, banana, orange, , pear?
i apple, wouldn't work rest of text files.
sed 's/\([^ ]*\) \([^ ]*\) \([^ ]*\)/\2 \3/'
i want output this:
foo foobar foo foobar1 abc b c barfoo foo is there general case can print these strings after first whitespace?
sed -r 's/^[^ ]+[ ]+//' in.txt (gnu sed; on osx, use -e instead of -r).
update:
as @jotne points out, initial ^ not strictly needed in case - though makes intent clearer; similarly, can drop [] around second space char.
the above deals spaces separating columns (potentially multiple ones, final + in regex), whereas op more mentions whitespace.
generalized whitespace version:
note: in forms below, \s , [:space:] match kinds of whitespace, including newlines. if wanted restrict matching spaces , tabs, use [ \t] or [:blank:].
sed -r 's/^\s+\s+//' in.txt (gnu sed; form not work on osx, -e.)
posix-compliant version (e.g., aix - thanks, @neronlevelu):
sed 's/^[^[:space:]]\{1,\}[[:space:]]\{1,\}//' in.txt
Comments
Post a Comment