根据您迄今为止的回答,我认为您可能正在寻找的是将单词视为由空格、逗号、句尾字符(即英语中的“.”“!”或“?”)和其他字符分隔的字符序列。您通常不会与字母数字字符组合找到的字符(例如“<”和“;”但不是'
-
#
$
%
)。现在, ”。” 是一个句子结尾字符,但您说它$27.00
应该被视为一个“单词”,因此.
需要根据上下文进行不同的处理。我认为“-”和其他一些字符可能也是如此。
因此,您需要一个可以将其转换的解决方案:
I have $27.00. We're 20% under-budget, right? This is #2 - mail me at "foo@bar.com".
进入这个:
I
have
$27.00
We're
20%
under-budget
right
This
is
#2
mail
me
at
foo@bar.com
那是对的吗?
使用 GNU awk 试试这个,这样我们就可以将 RS 设置为多个字符:
$ cat file
I have $27.00. We're 20% under-budget, right? This is #2 - mail me at "foo@bar.com".
$ gawk -v RS="[[:space:]?!]+" '{gsub(/^[^[:alnum:]$#]+|[^[:alnum:]%]+$/,"")} $0!=""' file
I
have
$27.00
We're
20%
under-budget
right
This
is
#2
mail
me
at
foo@bar.com
尝试提出其他一些测试用例,看看这是否总是符合您的要求。