如何使用sed和/或regex使用bash修剪文件中的行?

如何使用sed和/或regex使用bash修剪文件中的行?,regex,bash,macos,sed,Regex,Bash,Macos,Sed,这看起来应该很简单,但我花了太多时间搜索。如何使用sed和regex删除第四个单词后一行中的所有单词 例如: 19900101, This is a title 19091110, This is a really long title 我想要 19900101, This is a 19091110, This is a 我尝试过这样的答案,但我使用的是MacOSX,所以我得到了上下文地址错误 这可以使用cut轻松完成: cut -d ' ' -f 1-4 file 19900101,

这看起来应该很简单,但我花了太多时间搜索。如何使用sed和regex删除第四个单词后一行中的所有单词

例如:

19900101, This is a title
19091110, This is a really long title
我想要

19900101, This is a
19091110, This is a

我尝试过这样的答案,但我使用的是MacOSX,所以我得到了上下文地址错误

这可以使用
cut
轻松完成:

cut -d ' ' -f 1-4 file

19900101, This is a
19091110, This is a
或使用
awk

awk '{NF=4} 1' file

19900101, This is a
19091110, This is a
这可能适用于您(GNU-sed):


删除行中的第五个或更多单词。

这两个词都很好!请您解释一下语法好吗?awk命令将
NF
(#of fields)设置为4,从而丢弃之后的所有内容
cut
命令从位置
1-4
剪切字段您链接到的资源使用regex方言,我熟悉的任何
sed
版本都不支持该方言。您可以尝试Perl,或者了解如何在“传统”正则表达式中可移植地表达类似
\s
的内容。(这并不难。我会发布一个链接问题的答案。)
sed 's/\s*\S*//5g' file