Kratos Aurion
Kratos Aurion

Reputation: 33

unterminated `s' command, can't find my mistake

sudo wbinfo --group-info GROUPNAME| sed -r -e 's/(?:DOMAIN\\(\w+),?)|(?:[^]+:)/$1/g'

This command results in an

sed: -e expression #1, char 36: unterminated `s' command

The output of

sudo wbinfo --group-info GROUPNAME

is like

GROUPNAME:x:0123456789:DOMAIN\user1,DOMAIN\user2,DOMAIN\user3,...,DOMAIN\userN

I tried escaping all instances of ( with \(, \ with \\ (also \\ with \\\\)

sudo wbinfo --group-info GROUPNAME| sed -r -e s/'(?:DOMAIN\\(\w+),?)|(?:[^]+:)'/$1/g

(changed quoted area)

sudo wbinfo --group-info GROUPNAME| sed -r -e s/'(?:DOMAIN\\(\w+),?)|(?:[^]+:)/\1/g'

(\1 instead of $1)

I still don't know how to get what I need:

user1 user2 user3 ... userN

Upvotes: 3

Views: 202

Answers (3)

glenn jackman
glenn jackman

Reputation: 246754

Here's another approach with sed:

sed -r -e 's/^.*://' -e 's/[^,]+\\//g' -e 's/,/ /g'

First remove all the stuff before the last colon in the line,
then remove all the domain parts (non-commas followed by a backslash),
then change commas to spaces.

Upvotes: 1

hek2mgl
hek2mgl

Reputation: 157947

TL;TR

Your attempt is too complicated, you can simply use this:

sed -r 's/[^\]+DOMAIN\\([[:alnum:]]+)/\1 /g'

About the syntax error:

You are using sed -r which enables extended posix regular expressions. Note that in extended posix regular expressions the ? is used as a quantifier for optional repetition. You you need to escape it:

sed -r -e 's/(\?:DOMAIN\\(\w+),\?)|(\?:[^]+:)/$1/g'

However, there is still a problem left with the regex: you are using [^]. Note that the ^ when used in a character class, negates the match of that class. You are using the ^ but missed to say which characters should not matched. You need to put in something like:

sed -r -e 's/(\?:DOMAIN\\(\w+),\?)|(\?:[^abc]+:)/$1/g'

Upvotes: 2

karakfa
karakfa

Reputation: 67467

awk to the rescue!

$ ... | awk -F'\\\\' -v RS=, '{print $2}'

will give the result one user per line, if you want them to appear on a single line add ... | xargs

Upvotes: 1

Related Questions