【问题标题】:How can I remove digits from these strings? [closed]如何从这些字符串中删除数字? [关闭]
【发布时间】:2019-08-07 14:26:51
【问题描述】:

我有一个包含一些字符串值的文本文件:

PIZZA_123
CHEESE_PIZZA_785
CHEESE_PANEER_PIZZA_256

我需要删除这些值中的数值并需要以下输出。对我来说棘手的部分是这些数值每次都是随机的。我需要删除这些数值并将字符串值单独写入文件。

CHEESE_PIZZA
CHEESE_PANEER_PIZZA

有什么简单的方法可以做到这一点?

【问题讨论】:

  • 因此,我们鼓励用户发布他们为解决自己的问题所做的努力,请在您的帖子中添加。
  • 数字总是三位数吗?
  • PIZZA_123 被完全删除,最后一个下划线也被删除。 123_a4_5rrr 你想要什么?

标签: shell awk sed


【解决方案1】:
sed 's/_[0-9]*$//' file > file2

会做的。

【讨论】:

    【解决方案2】:

    有不止一种方法可以做到这一点。例如,由于数字似乎总是在最后一个字段中,我们可以在rev 实用程序的帮助下将cut 关闭最后一个字段。假设输入是pizza.txt

    rev pizza.txt | cut -d _ -f 2- | rev
    

    由于它使用两个实用程序和两个管道,它sed 更有效。对学生来说唯一的好处是不需要 regex - 唯一需要的文本是 _ 作为字段分隔符。

    【讨论】:

      【解决方案3】:

      您可以使用以下脚本。

      #!/bin/bash
      
      V1=PIZZA_123
      V2=CHEESE_PIZZA_785
      V3=CHEESE_PANEER_PIZZA_256
      
      IFS=0123456789
      
      echo $V1>tem.txt
      echo $V2>>tem.txt
      echo $V3>>tem.txt
      echo "here are the values:"
      
      sed 's/...$//' tem.txt
      
      rm -rf tem.txt
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-24
        • 2012-10-02
        • 1970-01-01
        • 1970-01-01
        • 2021-03-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多