Awk 在bash中,当文件中的每一行到达空格或逗号时,如何剪切它?

Awk 在bash中,当文件中的每一行到达空格或逗号时,如何剪切它?,awk,Awk,我基本上想要一个文件中每个句子的第一个单词,但是因为单词后面可以加标点符号,所以在空格后剪切就不行了 如果没有标点符号,我怎么能说出每个句子的第一个单词 例如,列表可以是: Hello, how are you? Bla bla bla 输出: Hello Bla 给定您的示例输入,gnugrep应该就足够了。例如: grep -Eo '^[[:alpha:]]+' file 你能试试下面的吗 对于sed: 使用awk: 如果我们需要从开始获取直到所有字符,请尝试: awk 'match(

我基本上想要一个文件中每个句子的第一个单词,但是因为单词后面可以加标点符号,所以在空格后剪切就不行了

如果没有标点符号,我怎么能说出每个句子的第一个单词

例如,列表可以是:

Hello, how are you?
Bla bla bla
输出:

Hello
Bla

给定您的示例输入,gnugrep应该就足够了。例如:

grep -Eo '^[[:alpha:]]+' file

你能试试下面的吗

对于sed:

使用awk:

如果我们需要从开始获取直到所有字符,请尝试:

awk 'match($0,/^[a-zA-Z]+\(\)-/){print substr($0,RSTART,RLENGTH)}' Input_file
要获取第一个非字符之前的所有内容,请尝试:


删除第一个非字母数字字符后的所有内容并打印:

awk'gsub/[^a-zA-Z0-9].*/,1'文件 对于POSIX字符类:

awk'sub/[^[:alnum:][].*/,1'文件
请把你的输入和预期输出的样本放在你的帖子里。另外,请添加您为解决您自己的问题所付出的努力。如何将其修改为包括括号、连字符等?@S.D将它们添加到括号表达式中。与[[:alpha:]-]类似,连字符必须位于末尾
awk 'match($0,/^[a-zA-Z]+/){print substr($0,RSTART,RLENGTH)}' Input_file
awk 'match($0,/^[a-zA-Z]+\(\)-/){print substr($0,RSTART,RLENGTH)}' Input_file
awk 'match($0,/^[[:alpha:]()-]+/){print substr($0,RSTART,RLENGTH)}' Input_file