【问题标题】:How to remove initial and final digits from strings using bash scripting如何使用 bash 脚本从字符串中删除初始和最终数字
【发布时间】:2017-07-29 22:29:37
【问题描述】:

对于 bash 脚本非常陌生,所以如果我有一个列表,通常是文本文件,每个文件特定于一个国家/地区,例如 USA.txt 客户端地址,带有前导 ZIP 和结尾邮政信箱(数字被屏蔽以保护隐私):

38495newyork940
454354irvine40404
2333wathington4440
32333california002929
23234dallas4th93303 

我想将 USA.txt 作为 bash 脚本的参数运行,该脚本将删除每行的前导数字和最后数字。请注意,某些城市或州的名称中可能包含数字,因此我想保留它们。

我尝试针对 sed 命令运行它,但我无法将最终结果结合起来,我只是使用以下命令删除前导或最终数字:

前导数字:

sed -r 's/^[0-9]+(.*[^0-9].*)$/\1/g'

对于结束数字:

sed "s/\([^0-9]\)[0-9]*\s*$/\1/"

我需要这样的输出:

newyork
irvine
wathington
california
dallas4th

谢谢

【问题讨论】:

    标签: bash sed


    【解决方案1】:

    你可以给sed任意数量的命令:

    $ sed 's/^[0-9]*//; s/[0-9]*$//' USA.txt 
    newyork
    irvine
    wathington
    california
    dallas4th
    

    或者您可以在一个命令中完成所有操作:

    $ sed 's/^[0-9]*\(.*[^0-9]\)[0-9]*$/\1/' USA.txt 
    newyork
    irvine
    wathington
    california
    dallas4th
    

    【讨论】:

    • 第三种方式是sed -E 's/^[0-9]*|[0-9]*$//gsed -E 's/^[0-9]*|[0-9 ]*$//g'(OP 的示例末尾有空格)
    • @Sundeep 空间似乎是一个神器。它们在编辑模式下不存在(最后一个示例行除外)。
    猜你喜欢
    • 2015-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-23
    • 2021-09-19
    • 2011-01-28
    相关资源
    最近更新 更多