2016-03-15 53 views
0

我一直在使用这种尝试提取文件名没有文件扩展:如何用awk

​​

和它返回完整路径。

有没有人知道如何得到没有扩展的结果?

实施例: D:\Test\test.tested.txt - >test

使用awk

回答

0
$ echo "D:\Test\test.tested.txt" | 
    awk '{n=split($1,a,"\\"); split(a[n],b,"."); print b[1]}' 

test 

您的脚本

... END{n=split(FILENAME,a,"\\"); split(a[n],b,"."); print b[1]}' 
+0

谢谢@karakfa。是工作 – Bams

0

请尝试以下答案。

awk'END {var = FILENAME; n = split(var,a,///);打印[n]}'D:\ Test \ test.tested.txt | awk -F“。” '{打印$ 1}'

0

AWK代码你想要做什么:

!uniq[FILENAME]++ { 
    aux[++k] = FILENAME; 
    next; 
} 
END { 
    for(i = 1; i <= k; i++) 
    { 
     a = split(aux[i], x, "."); 
     print x[1]; 
    } 
} 

作为一个班轮:

!uniq[FILENAME]++{aux[++k] = FILENAME; next;} END {for(i = 1; i <= k; i++) {a = split(aux[i], x, "."); print x[1];}} files 

next,至少在我的机器上,给出了一个轻微比从代码中省略更快的结果。

注:

file01 
file02 
data01 
:上面的代码会根据您传递给它的文件的顺序排序的输出,也就是说,如果你给它的文件 file01.txt file02.txt data01.txt,他们将按照相同的顺序进行排序

的同一码A较短的版本将是:

!filename[FILENAME]++ { 
     next; 
} 
END { 
     for(i in filename) 
     { 
       a = split(i, x, "."); 
       print x[1]; 
     } 
} 

作为一个衬里:

!filename[FILENAME]++ {next;} END {for(i in filename) {a = split(i, x, "."); print x[1];}} files 

结果没有任何意义。用户可以对其进行分类。