我现在正在做一项任务,让我难过的问题是:
“编写awk命令以插入相应的行号 上面文本文件中的每一行。空白行不应该是 在这种情况下编号。“
我有一个答案,但我很难找到每个组件所做的解释。
命令是:
awk '{print (NF? ++a " " :"") $0}' <textfile.txt>
我知道NF
是字段编号,而$0
是指整个输入记录。我尝试使用命令来查找什么做了什么,但每当我省略某些内容时,似乎总是会出现语法错误。
所以,我的问题是每个组件的作用是什么? ++a
做了什么? ?
之后的NF
?引号的位是什么?
提前致谢!
答案 0 :(得分:1)
指令... ? ... : ...
是if-else
。所以,它与:
if ( NF > 0 ) {
++a;
print a " " $0;
} else {
print $0;
}
a
是一个变量,只有在找到带字段的行时才会递增。
答案 1 :(得分:0)
print (NF? ++a " " :"") $0
您的解决方案中使用了三元运算符。 对于空行,NF将始终为0 所以
cond?true case:false case
如果NF> 0,则打印或打印“” a ++表示在打印后增加1,将用于下一个非空行处理。
awk 'BEGIN{count=1}{if($0~/^$/){print}else{print count,$0;count++}}' your_file
测试如下:
> cat temp.cc
int main ()
{
}
> awk 'BEGIN{count=1}{if($0~/^$/){print}else{print count,$0;count++}}' temp.cc
1 int main ()
2 {
3 }
>