ls 实例,还有部分不理解,求解答,一步一步来
ls -lart /opt/Roamware/logs/septel|grep "septel.pcap"|grep -v gz|tail -40|awk '$8>m {print $8,"get /opt/Roamware/logs/septel/"$9}' m=$tag1|sort -rn|tail -1
第一步:ls -lart /opt/Roamware/logs/septel|grep "septel.pcap"把目录下文件名含有septel.pcap的文件过滤出来,-lart的作用是什么
第二步:grep -v gz 是什么意思
第三步:tail -40 这的懂得 取最后40条记录
第四步:awk '$8>m {print $8,"get /opt/Roamware/logs/septel/"$9}' m=$tag1 对这一步的语法不是很明晰,怎么先用变量m($8>m )再声明变量(m=$tag1),还有好像awk中也没指明分隔符
第五步:sort -rn 按数值降序排列
第六步:tail -1 显示最后一行
[解决办法]
man ls
-l use a long listing format
-a, --all
do not ignore entries starting with .
-r, --reverse
reverse order while sorting
-t sort by modification time
[解决办法]
不包含字符串 gz 的行
.gz一般是压缩文件
但这样写其实不太严谨,因为文件名也可能包含gz
[解决办法]
LZ的问题都可以用man来解答。
[解决办法]
这是awk调用外部变量的一种写法,另外一种写法是这样:
awk -v m=$tag1 '$8>m {print $8,"get /opt/Roamware/logs/septel/"$9}'空格是默认的列分隔符
------解决方案--------------------
调用外部变量的一种写法
-v var=val
--assign var=val
Assign the value val to the variable var, before execution of the program begins. Such variable values
are available to the BEGIN block of an AWK program.
[解决办法]
你的-f用错了
-f program-file
--file program-file
Read the AWK program source from the file program-file, instead of from the first command line argument.
Multiple -f (or --file) options may be used.
这样就行了:
[root@ tmp]# cat urfile
1 2 3
a b c
[root@ tmp]# awk '{ for (i = NF; i > 0; --i) print $i }' urfile
3
2
1
c
b
a