0

我是 sed 的新手,我正在尝试找出一种方法来删除超过 6 个字符的文本中的单词。

到目前为止,我已经想出了这个,但它只是给了我一个空文件。

sed -n '/.\{6\}/!d' input > output

输入

但 sed 在管道中过滤文本的能力使其与其他类型的编辑器区别开来。

期望的输出

但它是 sed 的文本,它来自其他类型。

4

2 回答 2

2

你试过了吗

sed -r 's/\b\w{6,}\s?\b//g'

对于您的示例:

$ echo "But it is sed's ability to filter text in a pipeline which particularly distinguishes it from other types of editors."  | sed -r 's/\b\w{6,}\s?\b//g'
But it is sed's to text in a which it from other types of .

编辑:以上将删除6 个字符或更长的单词。您可能需要修改{6,}上面的表达式以满足您的需要。

于 2013-10-06T14:40:48.553 回答
1

这应该可以删除包含六个以上字母的单词 - 如果您将单词定义为由字母 AZ 和 az 组成:

sed -e s'/[A-Za-z]\{7,\}//g'
于 2013-10-06T14:48:12.563 回答