我需要你的帮助来解析awk的目录信息。 通过下面的输入,我可以获得每个行的完整目录名称和文件名吗? 也就是说,目录结构各不相同,并且目录数量没有规则。
/dir1/filename
/dir1/dir2/filename
/dir1/dir2/dir3/filename
/dir5/dir2/dir4/filename
/dir1/ filename
/dir1/dir2/ filename
/dir1/dir2/dir3/ filename
/dir5/dir2/dir4/ filename
答案 0 :(得分:3)
听起来这可能是你正在寻找的东西:
$ awk '{sub("[^/]+$","\t&")}1' file
/dir1/ filename
/dir1/dir2/ filename
/dir1/dir2/dir3/ filename
/dir5/dir2/dir4/ filename
但任何解决方案都会出现文件和/或目录名称的问题,这些名称包含用于导入您提及的数据库的分隔符。
答案 1 :(得分:1)
还有更简洁的答案,但这里的答案基于match
并得到了Ed的评论:
{
dname = substr($0, match($0, ".*/"), RLENGTH);
fname = substr($0, RLENGTH+1);
printf("%s %s\n", dname, fname);
}
<强>输入强>
/dir1/filename
/dir1/dir2/filename
/dir1/dir2/dir3/filename
/dir5/dir2/dir4/filename
../dir3/file
<强>输出强>
/dir1/ filename
/dir1/dir2/ filename
/dir1/dir2/dir3/ filename
/dir5/dir2/dir4/ filename
../dir3/ file
答案 2 :(得分:1)
gawk
:
awk '{print gensub("(.*)/(.*)","\\1 \\2","g")}' File