如何使用bash脚本删除从字符串最初和最后的数字

问题描述:

很新打坏的脚本,所以如果我有一个列表通常文本文件具体为与领先的ZIP和结束邮政信箱例如USA.txt客户端地址一个国家的每个文件(数字被屏蔽的隐私):如何使用bash脚本删除从字符串最初和最后的数字

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 

感谢

你可以给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 
+1

和第三个方法是' sed -E's/^ [0-9] * | [0-9] * $ // g'或'sed -E's/^ [0-9] * | [0-9] * $ // g''(OP的样本末尾有空格) – Sundeep

+0

@Sundeep空格似乎是一个神器。他们不在编辑模式下(除了最后一个样本行)。 –

+0

是的,最有可能在OP的文件中没有.. – Sundeep