1.输出文件行号
nl filename
cat –n filename
less –N filename
2.使用awk命令生成CSV文件
比如将当前目录文件的详细信息输出到CSV文件
ls -l | awk '{print($1","$2","$3","$4","$5",",$6,$7,$8","$9)}'
注:其中第6,7,8列是文件的修改时间
结果为:
total,8,,,, ,
-rw-r--r--,1,root,root,433, Nov 17 14:30,a.txt
-rwxr-xr-x,1,root,root,711, Jan 16 13:51,b.txt
-rw-r--r--,1,root,root,32, Apr 10 13:38,c.txt
-rwxr-xr-x,1,root,root,16, Jan 17 09:18,d.txt
-rwxr-xr-x,1,root,root,496, Dec 7 12:01,e.txt
drwxr-xr-x+,2,root,root,0, Apr 4 14:24,f
以上的结果中,第一行不是需要的文件信息,需要除去,所以在awk命令中加上以“-”开头为条件,则得到的结果为所有文件的详细信息,并用逗号分割,命令为:
ls -l | awk '/^-/ {print($1","$2","$3","$4","$5",",$6,$7,$8","$9)}',得到如下结果
-rw-r--r--,1,root,root,433, Nov 17 14:30,a.txt
-rwxr-xr-x,1,root,root,711, Jan 16 13:51,b.txt
-rw-r--r--,1,root,root,32, Apr 10 13:38,c.txt
-rwxr-xr-x,1,root,root,16, Jan 17 09:18,d.txt
-rwxr-xr-x,1,root,root,496, Dec 7 12:01,e.txt
如果需要把目录信息也输出的话,则为
ls -l | awk '/^[-d]/ {print($1","$2","$3","$4","$5",",$6,$7,$8","$9)}'
若要输出指定的行,加上行号的条件就行了,比如输出第二行到第五行的数据
ls -l | awk 'NR>=2 && NR <=5 {print($1","$2","$3","$4","$5",",$6,$7,$8","$9)}'
如果需要打印出行号,则在输出中加上NR(行号)
ls -l | awk 'NR>=2 && NR <=5 {print(NR”,”$1","$2","$3","$4","$5",",$6,$7,$8","$9)}'
结果如下:
2,-rw-r--r--,1,root,root,433, Nov 17 14:30,a.txt
3,-rwxr-xr-x,1,root,root,711, Jan 16 13:51,b.txt
4,-rw-r--r--,1,root,root,32, Apr 10 13:38,c.txt
5,-rwxr-xr-x,1,root,root,16, Jan 17 09:18,d.txt
上面的行号是原始文件里的行号,如果需要打印输出部分的顺序号,则应该这样写:
ls -l | awk 'NR>=2 && NR <=5 {print($1","$2","$3","$4","$5",",$6,$7,$8","$9)}'|nl -s ,
结果如下,(注意上面命令的最后一个逗号也是命令的一部分)
1, -rw-r--r--,1,root,root,433, Nov 17 14:30,a.txt
2, -rwxr-xr-x,1,root,root,711, Jan 16 13:51,b.txt
3, -rw-r--r--,1,root,root,32, Apr 10 13:38,c.txt
4, -rwxr-xr-x,1,root,root,16, Jan 17 09:18,d.txt
3.合并多个文件
sed -n -e "//x0d/p" 文件名
除去回车符
sed -e "s//x0d//g" old 文件名 > 新的文件名
lha xefw=dest_dir test.lzh