如何使用awk提取没有文件扩展名的文件名
How to extract file name without file extention using awk
我试过用这个:
awk 'END{ var=FILENAME; n=split (var,a,/\//); print basename a[n]}'
它正在返回完整路径。
有谁知道没有扩展名怎么得到结果?
示例:
D:\Test\test.tested.txt
--> test
使用 awk
?
试试下面的答案。
awk 'END{ var=FILENAME; n=split (var,a,///); print a[n] }' D:\Test\test.tested.txt | awk-F“。” '{打印 $1}'
下面的 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
,它们将按照相同的顺序排序:
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
结果在任何意义上都没有排序。由用户自行排序。
$ echo "D:\Test\test.tested.txt" |
awk '{n=split(,a,"\"); split(a[n],b,"."); print b[1]}'
test
为您的脚本
... END{n=split(FILENAME,a,"\"); split(a[n],b,"."); print b[1]}'
我试过用这个:
awk 'END{ var=FILENAME; n=split (var,a,/\//); print basename a[n]}'
它正在返回完整路径。
有谁知道没有扩展名怎么得到结果?
示例:
D:\Test\test.tested.txt
--> test
使用 awk
?
试试下面的答案。
awk 'END{ var=FILENAME; n=split (var,a,///); print a[n] }' D:\Test\test.tested.txt | awk-F“。” '{打印 $1}'
下面的 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
,它们将按照相同的顺序排序:
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
结果在任何意义上都没有排序。由用户自行排序。
$ echo "D:\Test\test.tested.txt" |
awk '{n=split(,a,"\"); split(a[n],b,"."); print b[1]}'
test
为您的脚本
... END{n=split(FILENAME,a,"\"); split(a[n],b,"."); print b[1]}'