我已经使用regex101.com和其他一些人来检查这是否正确而且似乎是这样。我想删除长度为两个字符的所有单词。我目前的实施是:
head -n 10 abstracts.txt | sed 's/ [a-zA-Z]{1,2} //g'
它只是没有做任何事情。我想从这样的事情出发:
这是一个简短的句子。
对此:
这句短句。
感谢您的帮助。
答案 0 :(得分:3)
转义花括号并使用单词边界:
head -n 10 abstracts.txt | sed 's/ [a-zA-Z]\{1,2\}\b//g'
答案 1 :(得分:1)
不要使用空格使用\b
作为字边界:
echo 'This is a short sentence' | sed -e 's/\b[a-zA-Z]\{1,2\}\b//g'
This short sentence
答案 2 :(得分:0)
仅供测试,使用awk
awk '{for (i=1;i<=NF;i++) if (length($i)<3) $i="";gsub(/ +/," ")}1'
This short sentence.
答案 3 :(得分:0)
这可能适合你(GNU sed):
sed -e 's/\b\w\w\?\b\s\+\|\s\+\w\w\?$//g' file
这将删除一行或前面的空格中的一个或两个字符单词和以下空格以及一行末尾的一个或两个字符单词。