从另一个文本字符串中减去一个文本字符串,留下唯一字符,也许使用 awk

ale*_*lex 3 awk text-processing

有什么方法可以从包含文本的另一列中减去包含文本的一列数据,并获得包含唯一字符的第三列,例如使用 awk,例如。

输入

ab   a
cd   d    
efg  ef
Run Code Online (Sandbox Code Playgroud)

所需的输出:

ab   a   b
cd   d   c
efg  ef  g
Run Code Online (Sandbox Code Playgroud)

man*_*ork 5

是的,awk是一个合适的选择:

awk 'NF{t=$1;gsub("["$2"]","",t);print$0,t}' input
Run Code Online (Sandbox Code Playgroud)

如果第二个字段可能包含在正则表达式字符类中具有特殊含义的字符,则必须对这些字符进行转义。在 POSIX 中解决这个问题awk很长,所以我awk只发布了 GNU替代方案:

gawk 'NF{print$0,gensub("["gensub(/([\[\]^-])/,"\\\\\\1","g",$2)"]","","g",$1)}' input
Run Code Online (Sandbox Code Playgroud)