1,正则表达式
几个特殊符号
[:alnum:] 0-9.A-Z,a-z
[:digit:] 0-9
[:upper:] A-Z
[:lower:] a-z
[:alpha:] a-z,A-Z
. 代表一个任意字符
* 重复0-∞个前面的字符
基础的正则表达式
1,grep -n 'the' 1.txt---- 表示在1.txt中查出带有“the”的并展示
2,grep -vn 'the' 1.txt---- vn这个表示不含“the”的并展示
3,grep -n 'a[ae]b' 1.txt----其中[ae]代表一个字符
4,grep -n '[^g]oo' 1.txt----表示找出含oo的,并且前面没有g,用^符号在集合[]中反选
5,grep -n '^the' 1.txt----找到行首带the的
6,grep -n '/.$' 1.txt----找到结尾带.的,/表示转义符
7,grep -n 'o\{2,5\}' 1.txt----找到含有2-5个o的字符{}需要转义
2,sed
参考这个https://www.runoob.com/linux/linux-comm-awk.html
sed命令:(常用)
-n:只展示sed处理的那一行;
-e:直接在命令上进行sed命令编辑
-i:直接修改文件内容,不输出
[L1,L2]function,L1,L2表示行号,不一定会存在;
function的参数:
添加:
a:a的后面可接字符串,展示在a后面一行;
i:插入位置在i的前一行;
替换:
c:后面可接字符串,这些字符串直接替换L1,L2之间的行;
s:可以直接进行替换,通常s可搭配正则表达式使用;
删除:
d:d后面通常不接任何参数
打印:
p:选择的数据打印出来,通常会与sed -n一起
sed 's/xxx/xxxx/g':
xxx:要被替换的字符串;
xxxx:替换后的字符串;
练习:操作/etc的passwd文件,
1,将/etc/passwd内容列出来,并删除2-5行;
2,在第二行后加上“hello”;在第二行前加上hello;
3,任意位置添加多行hello;
4,替换2-5行为12345;
5,仅仅列出文件的5-7行;
1, nl /etc/passwd | sed '2,5d'
2, nl /etc/passwd | sed '2a hello' nl /etc/passwd | sed '2i,hello'
3, nl /etc/passwd | sed '2a hello\
>hello\
>hello\
>hello'
备注:\>这个符号是”\+Enter来的“
4, nl /etc/passwd | sed '2,5c 12345'
5, nl /etc/passwd | sed ' 5,7p'
3,awk