【发布时间】:2015-03-01 01:26:12
【问题描述】:
在下面的数据中,我想正确区分缩进的行。每行包含 2 个以制表符分隔的字段,因此每个缩进的行都以不可见的制表符开头。
我想知道为什么下面测试第一个字段中的非空白的脚本只打印下面粘贴的数据的第二个和倒数第二个字段,而不是所有未缩进的行。欢迎提出解决方案的建议,但我想知道我写的内容有什么问题。
这是脚本
BEGIN {FS="\t"; OFS="\t"}
/\s*(directors)\s*$/ {type=$1; next}
$1~/\S/ {print}
数据。
directors
Özkul, Ahmet Salih Ii 2013
'Abd Al-Hamid, Ja'far A Two Hour Delay 2001
Badgeless sur la Croisette 2012
Just Outside the Frame: The Profilmic Event and Beyond 2008
Mesocafe 2009
Mesocafé 2011
'D.J'Arlia, Domenic She'll Never Know 2012
Cantarella 2011
Makhno Beer 2010
'Kid Niagara' Kallet, Harry Drug Demon Romance 2012
'Kusare, Mak (I) Baby Beautiful 2013/II
Comrade 2008
'Kusare, Mak (II) A Play Called a Temple Made of Clay 2014
'Legend' Spivey, Larry The Crime City Diaries: Entry 1 - Crooked 2012
'Noble Julz'Hamilton, Ulia Church Hurt 2015
【问题讨论】:
-
发布您的预期输出。
\s等也是 gawk 特有的,你在使用 gawk 吗? -
正如所指出的,常规 awk 中的
\S只是一个大写“S”,实际上您得到的结果(第二行和倒数第二行)正是带有“S”的结果在第一个领域。正如@EdMorton 建议的那样,我用gawk 尝试了你的脚本,它运行良好。我还用常规的 awk 尝试了@anubhava 的答案,效果很好。如果它不适合您,也许可以使用您从@anubhava 的答案创建的脚本文件的内容来更新您的问题。 -
@Ed Morton。我刚刚意识到我最近切换了机器,并且 man awk 显示我正在运行 mawk。
-
已经在新机器上安装了gawk,脚本现在没有改变,一切都很好。