读书人

ls 范例还有部分不理解求解答一

发布时间: 2013-08-23 15:57:36 作者: rapoo

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 显示最后一行
[解决办法]

引用
-lart的作用是什么

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
[解决办法]
引用
grep -v gz 是什么意思

不包含字符串 gz 的行
.gz一般是压缩文件
但这样写其实不太严谨,因为文件名也可能包含gz
[解决办法]
LZ的问题都可以用man来解答。
[解决办法]
引用
awk '$8>m {print $8,"get /opt/Roamware/logs/septel/"$9}' m=$tag1 对这一步的语法不是很明晰,怎么先用变量m($8>m )再声明变量(m=$tag1),还有好像awk中也没指明分隔符

这是awk调用外部变量的一种写法,另外一种写法是这样:
awk -v m=$tag1 '$8>m {print $8,"get /opt/Roamware/logs/septel/"$9}'

空格是默认的列分隔符
------解决方案--------------------


引用:
awk -v是什么干什么的

调用外部变量的一种写法

-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.
[解决办法]
引用:
awk -f '{ for (i = NF; i > 0; --i) print $i }';
另外上面这条语句怎么会报下面的错误,小白求解释
awk: can't open { for (i = NF; i > 0; --i) print $i }

你的-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

读书人网 >UNIXLINUX

热点推荐