前言
之前在Linux的使用过程中都是使用grep
, 以及sed
替换较多. 今天借此总体了解下其他的命令. 本文只对于其做一些简单的介绍, 详细链接可以看下手册.
正文
- grep
localhost:Desktop Sean$ grep -h
usage: grep [-abcDEFGHhIiJLlmnOoqRSsUVvwxZ] [-A num] [-B num] [-C[num]]
[-e pattern] [-f file] [--binary-files=value] [--color=when]
[--context[=num]] [--directories=action] [--label] [--line-buffered]
[--null] [pattern] [file ...]
个人感觉grep
的处理过程, 最主要的是写-E
后的正则表达式.
grep -E "hello*"
/ grep -E "[1-9]+"
- sed
localhost:Desktop Sean$ sed -h
sed: illegal option -- h
usage: sed script [-Ealn] [-i extension] [file ...]
sed [-Ealn] [-i extension] [-e script] ... [-f script_file] ... [file ...]
工作使用比较多的是使用sed
进行文本的替换.
注释 sed -i 's/^demo.key=.*/\#demo.key=/' ../config/application.properties;
- awk
localhost:Desktop Sean$ awk
usage: awk [-F fs] [-v var=value] [-f progfile | 'prog'] [file ...]
awk 在工作中主要处理列数据.
docker ps -a |grep "16 months ago" |awk '{print $1}'|xargs docker rm
另外, 还能在awk
内进行内嵌脚本:
awk 'BEGIN{ commands } pattern{ commands } END{ commands }'
# Example
echo -e "A line 1nA line 2" | awk 'BEGIN{ print "Start" } { print } END{ print "End" }'
Tips
如何输出文件的第10行?
cat hello.txt | sed '10!d'
/cat hello.txt | sed -n '10p'
cat -n hello.txt | grep -E "^ 10"
(这边使用-n使得读取时候显示行号 为了能够grep正则匹配出来)cat hello.txt | awk "NR==10"
head -n 10 hello.txt | tail -n 1
怎么只打印一个文件中的第十行?
请问我想获取文件第10行的数据,怎么用grep实现?
如何输出文件的第10到第20行?
head -n 20 hello.txt | tail -n 10
cat hello.txt | awk "NR>=10 && NR<=20"
cat env-config.sh | sed -n "11,20p"
centos 打印文件10-20行(多种方法)
Reference
[1]. shell之三大文本处理工具grep、sed及awk
[2]. Linux三剑客之awk命令
[3]. 【Linux】 字符串和文本处理工具 grep & sed & awk
[4]. Linux手册 grep命令
[5]. Linux手册 sed命令
[6]. Linux手册 awk命令
[7]. Linux下grep显示前后几行信息
[8]. sed命令用法
[9]. shell 获取结果中的第n列,第n行
[10]. sed命令详解