我尝试过使用它:
awk 'END{ var=FILENAME; n=split (var,a,/\//); print basename a[n]}'
它正在返回完整路径。
有没有人知道如何在没有延伸的情况下获得结果?
实施例:
D:\Test\test.tested.txt
- > test
使用awk
?
答案 0 :(得分:0)
尝试以下答案。
awk'END {var = FILENAME; n = split(var,a,///);打印[n]}'D:\ Test \ test.tested.txt | awk -F“。” '{print $ 1}'
答案 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.txt file02.txt data01.txt
,它们将按相同的顺序排序:< / p>
file01
file02
data01
相同代码的较短版本是:
!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
结果在任何意义上都没有排序。由用户对其进行排序。
答案 2 :(得分: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]}'