每个人都要有一个骨灰级的爱好,不为金钱,而纯粹是为了在这个领域享受追寻真理的快乐。
分类: LINUX
2011-05-14 14:23:41
内容:
AA
BC
AA
CB
CC
AA
结果:
AA YES
BC NO YES
AA YES
CB NO YES
CC NO YES
AA YES
sed '{/AA/b lable;s/$/ NO/;:lable;s/$/ YES/}' file
# 匹配到AA时,"b" 跳转去标签lable处,即执行:lable后面的命令 s/$/ YES/ (":"是申明标签)
# 继续匹配第二行,没有匹配到AA,那么执行 s/$/ NO/ 并且还会继续执行标签后的命令 s/$/ YES/
要想得到结果:
AA YES
BC NO
AA YES
CB NO
CC NO
AA YES
sed '/^AA/ba;s/$/ NO/;b;:a;s/$/ YES/' file
# 匹配到行首是AA时,"b"跳转去标签a处,执行 s/$/ YES/
# 继续匹配第二行,没有匹配到AA,那么执行 s/$/ NO/ 后跳转到"",既执行到脚本末尾,则跳过了命令 s/$/ YES/
sed '/^AA/s/$/ YES/;t;s/$/ NO/' file
# 匹配到行首是AA的行成功,执行 s/$/ YES/ ,则"t"跳转到""即脚本末尾
# 匹配到行首是AA失败,则"t"不生效,继续执行后面的命令 s/$/ NO/
结果:
AA YES NO
BC
AA YES NO
CB
CC
AA YES NO
sed '/^AA/s/$/ YES/;T;s/$/ NO/' file
# T的作用和t刚好相反,前面匹配为假则跳去""即脚本结尾