awk 与正则表达式作为分隔符

DPM*_*DPM 6 awk regular-expression

我想从文件中获取每一行的第一个单词。不幸的是,很多行都以空格开头。所以我尝试用以下内容来获取第一个词:

awk -F'[ \t]+' '{print $1}' < MyFile.txt,但它不起作用。我尝试这个echo " some string: here" | awk -F'[ \t]+' '{print $1}',结果是空行(我认为它打印空字符串)。那么为什么这不起作用呢?我想让它与 awk 命令一起使用并显式传递分隔符(出于教育目的)

提前致谢。

JJo*_*oao 1

在 awk 中,默认的字段分隔符-F " "BEGIN{FS=" "}遵循特殊约定

  • (1) 忽略初始空格和最终空格
  • (2) 分割[ \t]+

第 (1) 点 - 忽略初始/最终空格 -仅当字段分隔符恰好为 时适用 " "

这种行为实际上是我们所期望的。

默认awk '{print $1}'工作 find ,也是如此awk -F' ' '{print $1}'


输入记录分隔符(RS)还有另一个类似的约定:当RS="" 它代表段落分隔时:

  • (1) 分隔符为一个或多个空行
  • (2) 忽略初始和最后的空行。

第 (2) 点 - 忽略初始/最后的空行 -仅当输入记录分隔符恰好为 "" 时适用

  • 请注意,根据 `awk` 实现,使用 `FS=" "`(默认),它将在 `[ \t]+` 或 `[[:blank:]]+` 上分割。 (5认同)