Mac 终端中的剪切命令缺少补充选项

Posted

技术标签:

【中文标题】Mac 终端中的剪切命令缺少补充选项【英文标题】:cut command in Mac terminal lacks complement option 【发布时间】:2018-02-01 17:35:58 【问题描述】:

根据this cut 命令缺少--complement 选项。关于如何获得这个的任何建议?

我需要这个,因为它在 Linux sh 上受支持

我的问题与this 非常相似,所以我尝试关注以使其正常工作

#!/bin/sh
EXTRA=$@
REST=`echo $EXTRA | cut -d ' ' --complement -s -f1`
echo $REST

欢迎提出建议

PS:我不能用 bash 代替 sh

【问题讨论】:

既然您知道 OSX 上的 cut 不支持 --complement,您为什么认为这会起作用?你能解释一下你真正想要完成的事情吗,因为可能有一种方法不涉及使用cut 的这个功能(事实上,可能根本不使用cut)。 为了放大 ScottHunter 的评论,您的 Q 需要少量的输入样本集,以及该输入的所需输出、您的当前输出和任何错误消息的确切文本。祝你好运。 EXTRA=$@ 不是一件有用的事情,这让我怀疑cut 是否是您想要的解决方案。 【参考方案1】:

使用--complement 为通用用例解决此问题的正确方法是:

brew install coreutils

因为 gnu-cut 是 pkg 的一部分。

【讨论】:

并使用 gcut 切入终端【参考方案2】:

如果您真的只想要除第一个参数之外的所有参数,请使用 shift

#!/bin/sh
first_arg=$1
shift
printf '%s\n' "$@"  # Prints all but the first argument, one per line

【讨论】:

【参考方案3】:

您可以使用homebrew 安装gcut,GNU 版本的cut。

brew install gcut

那个支持--complement

【讨论】:

在我的 Mac 上不起作用。 apple.stackexchange.com/questions/191667/… 解决了【参考方案4】:

在末尾使用减号而不加任何其他内容等同于 --complement

#!/bin/sh
echo test asdf test | cut -d ' ' -s -f2-

例如上面的例子等价于

#!/bin/sh
echo test asdf test | cut -d ' ' -s -f1 --complement

【讨论】:

添加减号意味着您将范围从 2 剪切到末尾,因此如果您将所有列都删除到索引的左侧,但如果您删除一个特定的列,则不会发生这种情况中间的列。

以上是关于Mac 终端中的剪切命令缺少补充选项的主要内容,如果未能解决你的问题,请参考以下文章

Ubuntu中怎样修改命令终端Terminal的配色方案

如何使用终端命令注销Mac?使用终端注销Mac的方法!

mac的终端中终结删除文件夹的方法

2 Linux终端命令

Sqoop命令 - 缺少选项的参数:merge-key

Mac下如何显示隐藏文件