【问题标题】:Deleting column with cut or awk from a file in unix从 unix 中的文件中删除带有 cut 或 awk 的列
【发布时间】:2020-05-24 01:48:24
【问题描述】:

我在 unix 中有以下文件:

1098000000199400000099400000010110000000000007000+00000000000001400000032
2010199434117300000017300000010110000000000007000+00000000000000400000009
1010199434117300000017300000010110000000000007000+00000000000000400000009

我需要使用 awk 或 cut 命令删除第 50 位具有“+”的列。 我试图使用类似下面的代码,但它像字段一样处理它,我需要像列一样处理它:

awk '{ $50 = ""; print>"new.txt" }' file.txt

【问题讨论】:

  • 请将该示例输入的所需输出(无描述)添加到您的问题(无评论)。
  • 我怀疑你混淆了列和行。
  • 如果tr -d '+' < file 不是您所需要的,那么edit 您的问题可以提供更多/更清晰的信息,并且可能是一个更好的例子。

标签: shell unix awk edit cut


【解决方案1】:

您需要第 1 到 49 列以及 50 以上的所有内容:

cut -c1-49,51- file.txt

【讨论】:

    【解决方案2】:

    虽然@Walter A 的回答很完美,但我还是给出另一种方法,速度较慢,但​​适用范围更广:

    用vim打开输入文件:

    vim input.txt
    

    您将处于“正常模式”。输入 50| 转到第 50 列。

    然后按Ctrl+V,就会进入“块选择模式”。

    然后您可以使用箭头导航以标记一列或多列块(实际上是任何正方形文本),然后按 d 删除该块。

    这允许您以交互方式批量编辑列。它还允许您执行除删除之外的其他操作,例如复制到剪贴板(使用 "+y 而不是 d)。

    【讨论】:

      猜你喜欢
      • 2020-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-05
      • 2021-10-25
      • 1970-01-01
      • 2023-01-26
      • 2016-02-04
      相关资源
      最近更新 更多