a.txt內容如下:
111 222 baidu 333 444 google 555 666
交換包含baidu和包含google的行,得到:
111 222 google 333 444 baidu 555 666
代碼1:
sed '/baidu/{:a;N;/google/!ba;s/\([^\n]*\)\n\(.*\)\n\(.*\)/\3\n\2\n\1/}' a.txt
代碼1的執行過程:
代碼2:
sed '/baidu/{:a;N;/google/{s/\(^[^\n]*\)\(.*\)\(\n\)\([^\n]*$\)/\4\2\3\1/;t};ba}' a.txt
代碼2的執行過程:
代碼1和代碼2的特點:
1、不需要事先知道baidu和google分別在第幾行。
2、不管baidu和google是否相鄰,都可以正常處理。
3、如果先出現google後出現baidu,命令需要相應的做調整。