Awk无法解析亵渎符号

Ihe*_*uka 1 awk

awk脚本

awk 'BEGIN {FS = "\t"} $1==prev  {printf "\t" $2} $1 != prev {printf "\n" $1,$2} {prev=$1}' 
Run Code Online (Sandbox Code Playgroud)

当遇到亵渎的线条时,它就会倒下.下面的行在它们年后(括号中)以制表符分隔.

Richard Pryor... Here and Now (1983)    stand-up  
Richard Pryor... Here and Now (1983)    stand-up-comedian  
Richard Pryor... Here and Now (1983)    stand-up-comedy  
Richard Pryor: I Ain't Dead Yet, #*%$#@!! (2003)    african-american 
Run Code Online (Sandbox Code Playgroud)

获得错误

awk: cmd. line:1: (FILENAME=temp.list FNR=4) fatal: arg count with `$' must be > 0
Run Code Online (Sandbox Code Playgroud)

另一行(再次包含不解析的亵渎)

Merry F#%$in' Christmas (2005)  censored-profanity-in-title
Run Code Online (Sandbox Code Playgroud)

标签再次在括号内的年份之后.

gle*_*man 5

printf错误占你看到的问题:printf需要格式说明后一个逗号:

{printf "\t%s", $2} 
{printf "\n%s\t%s", $1,$2}
Run Code Online (Sandbox Code Playgroud)

你使用它的方式是,你连接换行符和$ 1来形成格式说明符.由于$ 1包含一个未经编码的%,printf会混淆并抛出错误.

此外,您的最后一行不会以换行结束,因此最后添加此子句:

END {print ""}
Run Code Online (Sandbox Code Playgroud)