Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 按空格序列分割的awk_Regex_Awk_Split_Whitespace_Separator - Fatal编程技术网

Regex 按空格序列分割的awk

Regex 按空格序列分割的awk,regex,awk,split,whitespace,separator,Regex,Awk,Split,Whitespace,Separator,split(字符串、数组、分隔符)在awk中是否可以使用空格序列作为分隔符(或者更一般地使用任何regexp作为分隔符) 显然,可以使用内部autosplit(以FS变量的值作为分隔符在输入的每一行上运行),并使用simplefor和$0魔术来实现这一点。然而,我只是想知道是否有一种更直接的方法可以使用GNU awk(1)手册页面中的拆分本身。: split(s, a [, r]) 将字符串s拆分为正则表达式r上的数组a,并返回字段数。如果省略r,则使用FS 这里的要点是,您可以使用任何正则表

split(字符串、数组、分隔符)
awk中是否可以使用空格序列作为分隔符(或者更一般地使用任何regexp作为分隔符)

显然,可以使用内部autosplit(以
FS
变量的值作为分隔符在输入的每一行上运行),并使用simple
for
$0
魔术来实现这一点。然而,我只是想知道是否有一种更直接的方法可以使用GNU awk(1)手册页面中的
拆分本身。

split(s, a [, r])
将字符串s拆分为正则表达式r上的数组a,并返回字段数。如果省略r,则使用FS

这里的要点是,您可以使用任何正则表达式来执行字段拆分——至少您可以使用gawk。如果您正在使用其他内容,则需要检查您的文档。

来自GNU awk(1)手册页面:

split(s, a [, r])
将字符串s拆分为正则表达式r上的数组a,并返回字段数。如果省略r,则使用FS

这里的要点是,您可以使用任何正则表达式来执行字段拆分——至少您可以使用gawk。如果您正在使用其他内容,则需要检查您的文档。

说明:

这将字符串分成由fieldsep分隔的片段,并存储 成串的碎片。第一块存储在数组[1]中,第二块 数组中的片段[2],以此类推。第三个字符串的字符串值 参数fieldsep是一个regexp,描述在何处拆分字符串 as FS可以是一个regexp,描述在何处拆分输入记录)。如果 省略字段sep,使用FS的值。split返回 创建的元素数。然后,split函数分割字符串 以类似于将输入行拆分为 田地

下面是一个简短(有点愚蠢)的示例,它使用一个简单的正则表达式
“.s”
,它将匹配任何单个字符,后跟一个小写的
s
和一个空格。拆分的结果被放入数组
a
。请注意,匹配的零件不会放置到阵列中

BEGIN { 
  s = "this isn't a string yes isodore?"
  count = split(s, a, ".s ")
  printf("number of splits: %d\n", count)

  print "Contents of array:"
  for (i = 1; i <= count; i++) 
    printf "a[%d]: %s\n", i, a[i]
}
本文展示了一个使用
split()
解析行的示例。这包含一个使用正则表达式将数据拆分为 数组。

表示:

这将字符串分成由fieldsep分隔的片段,并存储 成串的碎片。第一块存储在数组[1]中,第二块 数组中的片段[2],以此类推。第三个字符串的字符串值 参数fieldsep是一个regexp,描述在何处拆分字符串 as FS可以是一个regexp,描述在何处拆分输入记录)。如果 省略字段sep,使用FS的值。split返回 创建的元素数。然后,split函数分割字符串 以类似于将输入行拆分为 田地

下面是一个简短(有点愚蠢)的示例,它使用一个简单的正则表达式
“.s”
,它将匹配任何单个字符,后跟一个小写的
s
和一个空格。拆分的结果被放入数组
a
。请注意,匹配的零件不会放置到阵列中

BEGIN { 
  s = "this isn't a string yes isodore?"
  count = split(s, a, ".s ")
  printf("number of splits: %d\n", count)

  print "Contents of array:"
  for (i = 1; i <= count; i++) 
    printf "a[%d]: %s\n", i, a[i]
}
本文展示了一个使用
split()
解析行的示例。这包含一个使用正则表达式将数据拆分为
一个数组。

你能告诉我们你想完成什么任务,并提供一些输入/输出示例吗。拆分可能有其他选择。您能否告诉我们您试图完成的任务,并提供一些输入/输出示例。拆分可能还有其他方法。
man
页面的GNU扩展部分只提到使用空字符串拆分单个字符。通常将正则表达式与
FS
split()
一起使用不是扩展。
man
页面的GNU扩展部分仅指使用空字符串拆分单个字符。通常将正则表达式与
FS
split()
一起使用不是扩展。