在下面的数据中,我想正确区分缩进的行。每行包含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
答案 0 :(得分:2)
对空格而不是PCRE \s
或\S
使用posix正则表达式属性:
awk 'BEGIN {FS=OFS="\t"}
/[[:space:]]*directors[[:space:]]**$/ {type=$1; next}
$1~/[^[:space:]]/' file
请注意使用[[:space:]]
代替\s
和[^[:space:]]
代替\S
。