下面这些绝对是本人亲身经历的面试题目:有的直接就傻眼,竟然当时忘记答案了,没法啊,作为初学者,我承认我很水。
1)Linux下获取文件关键字所在的行的行号:
举例:文件名a.txt ,关键字为:“abc”
文件内容是:
Hello
World
Linux
Unix
abc
方法一:
sed -n '/关键字/'= 文件名
命令如下:
# sed -n '/abc/'= a.txt
5
等号就是打印行号的意思。
注意:等号后面要有个空格,然后再加文件名,
方法二:
cat 文件名|awk '{print NR" "$0}'|grep 关键字|awk '{print $1}'
命令如下:
cat a.txt|awk '{print NR " " $0}'|grep "abc"|awk '{print $1}'
命令用了3次管道,被分成了4部分。我一段段解释:
第一段:cat a.txt,
查看文件内容。
单独运行的这个命令的输出为:
# cat a.txt
Hello
World
Linux
Unix
abc
第二段:awk '{print NR " " $0}'
1) awk这个命令很强大,如果想详细了解,可以自己查,我这推荐个网站:
http://blog.csdn.net/tianlesoftware/article/details/6278273
2) 这里只解释下用到的关键字
'{print NR" "$0}' 这个意思是 打印行号以及该行所有内容,并以空格" "隔开
运行前两段命令:可以得出如下结果(在原来基础上加入了行号)
# cat a.txt |awk '{print NR " " $0}'
1 Hello
2 World
3 Linux
4 Unix
5 abc
第三段:grep "abc"
不用说了,查找关键字 “abc”
运行前三段命令,结果为:
# cat a.txt |awk '{print NR " " $0}' |grep "abc"
5 abc
第四段:awk '{print $1}'
前面看到$0,意思是把当前行所有内容全都打印出来。
$n的代表一行内容被分成n段,分隔符默认为空格或tab,这是为什么第二段命令要加一个空格的原因。从前三段可以看出输出为:5 abc,所以被分成2部分,第一部分为行号5,第二部分为关键字“abc”,即$1的值是5。
运行整个命令,结果为:
# cat a.txt |awk '{print NR " " $0}' |grep "abc" |awk '{print $1}'
5
也可以在print 后面可以加任意字符串,第二段命令中的空格“ ”也属于这个应用:
# cat a.txt |awk '{print NR " " $0}' |grep "abc" |awk '{print "line: " $1}'
line: 5
到此为止以上的题目就解释完毕了,再次佩服一下管道的神奇作用。
2)打印文件的内容有多少行:
wc -l 文件名
WC(word count), -l 代表 打印行数。
用上面的文件举例:
# wc -l a.txt
5 a.txt
面试的时候这个都没答出来,连厕(WC)所这么牛B的命令都可以忘记,悲催啊,相信以后再也不会忘记了。
未完,待续。。。
阅读(1219) | 评论(0) | 转发(1) |