获取没有 AWK 的字符串的最后一列

Jac*_*ins 1 grep bash sed awk

我想知道我是否可以使用sedgrep(但没有-P标志)来提供与awk '{print $6}'.

我正在为 iOS 制作脚本,但我不想安装任何 3rd 方命令(如awk)。

  • grepiOS上也并不支持-P标记,所以没有perl-regexp
  • cut是 iOS 上的第 3 方命令(所以没有cut

Kus*_*nda 6

如果您在脚本的变量中有一个字符串,并且您想提取最后一个字段(如您在问题标题中所说),那么您可以这样做

field=${string##* }
Run Code Online (Sandbox Code Playgroud)

这假定字符串 in$string是空格分隔的(将上述变量替换中的空格更改为您使用的任何分隔符)。的${variable##pattern}变量替换删除从最长的前缀字符串$variable是匹配给定pattern

对于sed文件,以下内容将提取每行的最后一个以空格分隔的字段:

sed 's/^.*[[:space:]]//' data.in
Run Code Online (Sandbox Code Playgroud)

它通过删除包括每行最后一个空格字符在内的所有内容来实现这一点。[[:space:]]如果您的数据不使用制表符或空格作为分隔符,请更改为与最后一列之前的分隔符匹配的正则表达式。