【问题标题】:Print the last field using 'cut' [duplicate]使用'cut'打印最后一个字段[重复]
【发布时间】:2012-05-26 03:13:10
【问题描述】:

假设我有以下数据:

ae722d1d94dcd3b161af166936:!]z@.:123
09338b2b29919e6c0daefbcce0361335:21f2e48d86f28ab7cd5c9c95:123
$H$92Gh.gRJwECLPzkjACPihoLg/:123
c6f1cb5f1feeece60f9a8e067e0:v4Zz'Cj5_Ze{J+iRW{2z,<~:123
202cb962a75b964b07152d234b70:123
40bd0015630c35165329ea5ecbdbbeef:123

(无效的哈希,仅用于解释目的)

我想使用cut 工具仅打印最后一个字段。

123
123
123
123
123
123
  • 我不想使用rev 命令。
  • 我只想要cut,我知道如何在sedawk 中做到这一点。

--complement 标志可能会有所帮助!

【问题讨论】:

  • 不,我要学习生物化学作为家庭作业。
  • 为什么只能使用cut?也许有更好的方法来解决这个问题。
  • 肯定有更好的方法来解决这个问题。哎呀,即使是 bash 本身 也能更好地解决它。
  • @all:我知道有 +1M 的方法可以做到这一点。但是cut 是这里需要的。
  • 如何使用ls 创建文件?如何仅使用dd 在远程计算机上执行命令?我如何使用 [不是为动作 X 设计的工具] [执行动作 X]?这些都是愚蠢的问题。为工作使用正确的工具。对于这项工作,cut 是错误的工具。

标签: shell unix field cut


【解决方案1】:

对于该特定数据,您可以:

cut -f2- -d: file | cut -f2 -d:

如果你可能有三个冒号:

cut -f2- -d: file | cut -f2- -d: | cut -f2 -d:

您可以根据需要继续添加更多cuts。

诀窍是cut 对没有分隔符的记录没有任何作用,因此您可以使用连续的cuts 来删除第一个字段,同时保留您已经找到的最后一个字段。

【讨论】:

  • 谢谢!我其实很喜欢多个cuts 的想法。
【解决方案2】:

当我在寻找这个答案时,我在另一个地方看到了这个。

rev, cut (在分隔符上) -f 1, rev

将最后一个字段向前移动,剪切,然后向后移动

我觉得这有点花哨

【讨论】:

    猜你喜欢
    • 2018-07-31
    • 2014-05-08
    • 1970-01-01
    • 2022-01-05
    • 1970-01-01
    • 2014-04-07
    • 1970-01-01
    • 2017-12-27
    相关资源
    最近更新 更多