使用 sed 删除单词范围

Remove range of words with sed

我正在尝试使用 sed 从文件中删除 Unix 命令行中的一系列单词,但我无法弄清楚。例如,如何删除位置 2-4 的单词? 如果文件包含:"This is a file created by me." 我希望它是:"This created by me." 非常感谢!

用 GNU sed 试试这个(将单词 1 和单词 5 打印到最后一个单词):

echo "This is a file created by me." | sed 'y/ /\n/' | sed -n '1p;5,$p' | sed 'N;N;N;y/\n/ /'

输出:

This created by me.

您也可以使用 awk 来实现:

echo "This is a file created by me." | awk '{for (i=1;i<=NF;i++) if (i<2||i>4) printf "%s ",$i;print ""}'
This created by me.

这可能适合您 (GNU sed):

sed -r 's/(\s+\S+){3}//' file