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