1、总结sed和awk的详细用法;
sed 流编纂器,处置一行数据到模式空间(p),不匹配条件话就输出源行,匹配条件且有处置话,就输来路置过后的行和源行, 匹配条件且没有处置动作的话,只输出p空间的行;坚持空间(h)用来寄存模式空间的临时处置成果 [root@centos ~]# sed "" sed.txt 1111 匹配条件没有处置动作,直接打印p空间读到的行 2222 3333 4444 [root@centos ~]# sed "p" sed.txt 1111 匹配条件且有处置话,就输来路置过后的行和源行 1111 2222 2222 3333 3333 4444 4444 [root@centos ~]# sed -n "p" sed.txt 1111 -n 匹配条件和处置后的行 2222 3333 4444 [root@centos ~]# sed "2p" sed.txt 1111 1,3,4行动不匹配条件,输出源行 2222 2222 匹配条件且有处置话,就输来路置过后的行和源行 3333 4444 [root@centos ~]# sed "2G" sed.txt 1111 1,3,4行动不匹配条件,输出源行 2222 ---- 匹配条件且没有处置动作的话,只输出p的行(p的第二行变成了2222和h的空行) 3333 4444 G:从坚持空间取出内容追加至模式空间 [root@centos ~]# sed "2g" sed.txt 1111 1,3,4行动不匹配条件,输出源行 ---- 匹配条件且没有处置动作的话,只输出p的行(p的第二行2222被坚持空间的空行笼罩) 3333 g: 从坚持空间取出数据笼罩至模式空间; 4444 [root@centos ~]# sed "2h" sed.txt 1111 1,3,4行动不匹配条件,输出源行 2222 匹配条件且没有处置动作的话,只输出p的行(p的第二行2222笼罩了h的空行,此时h的行动2222) 3333 h: 把模式空间中的内容笼罩至坚持空间中; 4444 [root@centos ~]# sed "2H" sed.txt 1111 1,3,4行动不匹配条件,输出源行 2222 匹配条件且没有处置动作的话,只输出p的行(p的第二行2222追加到了h的空行,此时h的行动空行和2222) 3333 H:把模式空间中的内容追加至坚持空间中 4444 [root@centos ~]# sed "2x" sed.txt 1111 1,3,4行动不匹配条件,输出源行 ---- 匹配条件且没有处置动作的话,只输出p的行(p的第二行2222变成了h的空行,此时h的行动2222) 3333 x: 把模式空间中的内容与坚持空间中的内容进行互换; 4444 [root@centos ~]# sed "n;p" sed.txt 1111 第一行履行n,匹配条件且没有处置动作的话,只输出p空间的行 1111和2222(原来只有1111) 2222 2222 第一行的p命令打印刚读取的下一行2222, 如此重复,下一次该从3333起 3333 4444 4444 n: 读取匹配到的行的下一行至模式空间,相当于每次处置两行数据; [root@centos ~]# sed "N;p" sed.txt 1111 第一行履行N,匹配条件且没有处置动作的话,只输出p空间的行 1111和2222 2222 1111 第一行的p命令,则打印了p空间的行1111和2222 如此重复,下一次从3333起 2222 3333 4444 3333 4444 N:追加匹配到的行的下一行至模式空间,相当于每次处置两行数据; [root@centos ~]# sed "$!N;$!D" sed.txt 3333 4444 匹配条件且没有处置动作的话,只输出p空间的行,首先1111,2222不是最后一行,则$!D从p空间删掉1111和2222, 然后3333,4444中的4444是最后一行,$!D没有起作用,最后p空间的3333,4444输出到屏幕 以上是自己个人懂得,不保证准确,,,更多用法请man sedsed 流编纂器,处置一行数据到模式空间(p),不匹配条件话就输