日期:2014-05-16  浏览次数:20615 次

请教大侠,如何用awk取文件中各列的后面几个字段,
输入是一个文件,里面是各个目录下的文件列表,主要问题是路径的深度不一样,
文件中内容如下:
./test/files/aaa.txt
./sample/user.c
./output/eng/all/common.info
....

现在想要做的是将前面的第一个目录去掉,结果要求如下:
/files/aaa.txt
/user.c
/eng/all/common.info
....

我查了下awk,可以以/为分隔符,但是这种情况下,每一列的段的个数是不一样的?请教大侠有什么技巧可以简单的实现?谢谢各位

------解决方案--------------------
你这个用awk做不了,有sed可以,命令如下
sed 's/\.\/[^\/]*\//\//g' youfile.txt

------解决方案--------------------

 awk -F/  '{OFS="/" ;for(i=3;i<=NF;i++)printf "/"$i;if (NF > 2) printf "\n";}' file

awk可以的,试试
------解决方案--------------------
引用:
你这个用awk做不了,有sed可以

sed可以简化成这样:
sed 's#\./[^/]*/#\/#' urfile


awk也不难:
awk 'BEGIN{FS=OFS="/"}{$1=$2="";print substr($0,2)}' urfile