如何使用bash脚本从字符串中删除初始和最终数字

时间:2017-07-29 14:20:54

标签: bash sed

bash脚本编写的新手如果我有一个列表,通常是文本文件,每个文件都针对一个国家/地区,例如USA.txt客户端地址,带有前导ZIP和结尾的P.O Box(数字被屏蔽以保护隐私):

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

由于

1 个答案:

答案 0 :(得分:3)

您可以根据需要提供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