3
回答
linux shell 编程如何学习?
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   

文件格式如下:要求提取出数字
GPS    : (Apr 22, 05  06:13:01) (N 19:48.5264)(E 115:19.4939) (5.3kt 148d) Mark 265
GPS    : (Apr 22, 05  06:13:41) (N 29:48.4748)(E 115:19.5194) (4.9kt 161d) Mark 1

变为:
22  05  06:13:01  19:48.5264   115:19.4939   5.3  148   265
22  05  06:13:41  29:48.4748   115:19.5194   4.9  161   1

答案如下:

sed -r 's/[^0-9:.]{2,}/ /g;s,:,,;s,^ +,,'
或者sed -r 's/[a-zA-Z(),: ]{2,}/ /g'
sed 's/[^0-9]*\([0-9:.]*\)/\1 /g;s/.$//' urfile

tr -d "[a-zA-Z(),]" < urfile | sed -r 's/^.{7}//'

看了这些shell,我真心感觉头都大了,不知道大家如何学习linux shell的?感觉这些shell像天书呀,不知道是不是自己比较笨呢,还是linux shell 真的很难?或者我的学习方法有问题。

我目前的做法,希望通过阅读其他人的shell来提升自己的shell水平。

<无标签>
举报
共有3个答案 最后回答: 4年前

sed其实就是一个工具,跟我们常用的ping一样。多用多看man就熟悉了。如果一个不懂电脑的人用ping也头大。

tr -d "[a-zA-Z(),]" < urfile | sed -r 's/^.{7}//'

将urfile文件中的所有字母(包括大小写),以及括号和逗号,都删除掉。然后在把开头的7个字符删掉。就行了。在说说sed -r,-r使用扩展的正则表达式,如果没有-r的话,这里就要这样使用sed 's/^.\{7\}//'

sed -r 's/[^0-9:.]{2,}/ /g;s,:,,;s,^ +,,' 这个根据分号分为三部分,第一部分就是把所有的不需要的字符使用空格替换掉。第二部分就是把第一个冒号去掉,第三部就是把开头的空格去掉。

不过脚本这些东西,有些确实很复杂,不花点时间写或者读,还真头痛。



顶部