在Linux上提取子字符串

  • 在脸书上分享
  • 分享到Twitter
  • 分享LinkedIn
  • 分享Reddit
  • 通过电子邮件分享
  • 打印资源
电子邮件收购>木偶手操纵字符串
Spencer Whalen / Getty Images

有很多方法可以使用Linux从文本线中提取子字符串,并且在准备可用于处理大量数据的脚本时,可以非常有用。这篇文章描述了您可以利用使提取子字样轻松的命令的方法。

使用BASH参数扩展

使用时bash参数扩展,您可以为要提取的文本指定启动和结束位置。例如,您可以通过分配一个值来创建一个变量,然后使用如下所示的语法选择该变量以选择其部分。

$ string =“快乐的日子再次在这里” $ echo $ {string:1:10} appy days $ echo $ {string:0:9}快乐日

请注意,上面的示例清楚地表明,该技术启动位置编号为0。因此,在下一个示例中,7表示字符串中的第八个字符,-2表示删除最后2个字符。结果,下面第一个示例中的子字符串具有一个字符,第二个字符除了最后两个字符。

$ string =“ 1234567890” $ echo $ {string:7:-2} 8 $ echo $ {字符串:0:-2} 12345678

在下一个示例中,我们首先使用“ set-”创建一个变量,然后使用回声显示第八和第九个字符。换句话说,它从第八个字符(7)开始,然后显示两个字符。

$ set -01234567890abcdef $ echo $ {1:7:2} 78

注意:您可以显示带有的字符串命令通过简单地使用命令“ Echo $ 1”。这是上面示例中“ 1”所引用的内容。

$ set -01234567890abcdef $ echo $ 1 01234567890ABCDEF

使用切割

命令可以通过几种方式使用文本缩减子字符串。这-C选项允许您选择要显示的字符位置。为了,字符编号从1开始。

$ ECHO“ 12345” |剪切-c 1-3 123

在下一个示例中,我们按字符位置选择最后两个单词。如果选择比可用的更多字符,则不会影响输出。

$ ECHO“玩得开心” |剪切-c 6-13一些有趣的$ cut -c 6-13 <<<“有一些有趣的“一些有趣的$ echo”享受一些乐趣|剪切-c 6-20一些有趣

此外,您可以将文本输送到命令或使用命令在文件中使用文本。只需确保该职位适用于每一行。

$ cat myfile $ cut -c 6-15 myfile有些乐趣,玩得开心

命令还可以与定界符一起使用,这通常使与单词或字段无法精确排列的文件更容易使用。例如,要使用邮件地址文件,您可以这样做以拉出逗号分隔地址中的第三个字段:

$ cat地址$ cut -d,-f3地址6803 GRALB ROAD,HURLOCK,医学博士MD 121 Blueberry Drive,Outback,VA VA VA VA VA 1427 N 12th Street,Reading,PA 2001 Turtle Road,Baker,Baker,WV WV 264 Dakota Street,Groton,Groton,Groton,Groton,Groton,CT CT 111无脑圈,TX TX 1089 Plymouth Drive,Rahway,NJ NJ NJ 949 Endless Lane,Hoboken,NJ NJ NJ NJ 2001 Turtle Road,Outback,VA VA VA

您可以通过指定一个范围(例如“ 2-3”)或序列(例如“ 2,3”)来选择多个字段,如下所示。

$ cut -d,-f2-3地址$ cut -d,-f2,3地址Hurlock,医学博士Hurlock,MD Outback,VA Outback,VA Reading,PA Reading,PA Baker,WV Baker,WV Baker,WV Groton,CT Groton,CT Groton,CT德克萨斯州芹菜,德克萨斯州拉韦,新泽西州拉威,新泽西州霍博肯,新泽西州霍博肯,新泽西州内陆,弗吉尼亚州内陆,弗吉尼亚州

使用尴尬

尴尬命令也可以用于提取子字符串。这是从提供短语中摘取文本的一个示例:

$ awk'{print substr($ 0,6,8)}'<<<“洗车”你的车

$ 0表示完整的短语。

要使用具有划界字段的文件,请使用-F(字段定界符)选项。在这种情况下,定界符是逗号。利用-F':'如果文件被结肠限制。

$ awk -f',''{print $ 3}'地址|排序|UNIQ CT MD NJ PA TX VA WV

如果您的字段与逗号和空间都分开,那就没问题尴尬。只需在这样的命令中指定:

$ awk -f',''{print $ 3}'地址|排序|UNIQ CT MD NJ PA TX VA WV

实际上,如果您想要尴尬命令工作不管字段是否仅用逗号或逗号和空白分开,您都可以做到这一点:

$ awk -f',?''{打印$ 3}'地址|排序|UNIQ CT MD NJ PA TX VA WV

使用尴尬,您还可以使用这样的语法显示两个字段:

$ awk -f',''{打印$ 2,$ 3}'地址|排序|Uniq Baker WV芹菜TX GROTON CT HOBOKON NJ Hurlock MD Outback VA Rahway NJ阅读PA

使用expr

使用Expr命令,键入“ expr subtr”,然后是字符串,启动位置和字符串长度。

$ expr substr“玩得开心” 6 8一些有趣
$ str =“有些乐趣” $ expr substr“ $ str” 6 8一些有趣

包起来

有很多方法可以在Linux上提取子字符串,但是您可能使用的每个命令都有其自己的怪癖和自己的优势。

加入网络世界社区足球竞猜app软件FacebookLinkedIn评论最重要的主题。
有关的:

版权所有©2022 IDG Com足球竞彩网下载munications,Inc。