在shell(不是Bash)中,我有一个这样的字符串,我想解析:
stringhere/morestring!99
Run Code Online (Sandbox Code Playgroud)
解析后,我想保留99在最后,并扔掉字符串的其余部分。
需要保留的子串不会总是两个字符长。它将是一个或多个数字,从!到 字符串的末尾,或 a ,。
示例输入/输出:
In: stringhere/morestring!99
Out: 99
In: string/more!99,string/more!98,string/more!97
Out: 99
Run Code Online (Sandbox Code Playgroud)
cut听起来很明显,除了!在字符串的中间。
是否有捷径可寻?会awk更好吗?
rAl*_*len 10
如果该字符串在 FILE 中,并且您总是只想要第一个之后!和之前的第一个数字,,如果它存在,这应该可以工作
awk -F'[!,]' '{print$2}' FILE
Run Code Online (Sandbox Code Playgroud)
它采用!或,作为分隔符并显示第二个字段,如果该行中没有,则该字段将是!和,或之后的第一个数字,或者在它之前。! ,
如果,之前有第一个!上层 awk 示例是不适用的。
您也可以将一个cut命令通过管道传输到另一个命令,首先您指定!为分隔符并在第一个之后获取内容!,第二个您指定,为分隔符并在第一个之前获取内容(,如果存在)
cut -d'!' -f2 FILE | cut -d',' -f1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
349 次 |
| 最近记录: |