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 终端中的剪切命令缺少补充选项的主要内容,如果未能解决你的问题,请参考以下文章