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

是否有任何方法可以从包含文本的另一列中减去包含消息的一列数据,并获得具有独一无二字符的第三列,例如使用 awk,例如。

输入

ab   a
cd   d    
efg  ef

期望的结果:

ab   a   b
cd   d   c
efg  ef  g
3
2022-06-07 14:41:24
资源 分享
答案: 2

Manatworks 解决方案当然是惩罚。 这只是一个纯粹的 bash 选项。

while read line
do
  in=${line/ */}
  pat=${line/* /}
  echo $line ${in/$pat}
done < aba.dat

ab a b
cd d c
efg ef g
  • in 中,从 $line 替换 (/) 什么是空白,被某些东西所坚持 - 不是正则表达式,而是通配样式
  • pat 中则相反:删除空格之前的内容。 摆脱,因为 $src/pattern/replacement 的替换组件是空的
  • $ in/$ rub 完全没有改变 in 中的 pat。 rub var 需要注意为变量 $ 而不是第一个变量/部分(in)
1
2022-06-07 15:13:04
资源

是的,awk 是一个理想的选择:

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

如果第二个区域可能在正则表达式字符课程中有特殊定义的字符,则需要转义。 在 POSIX awk 中解决这个问题很长,所以我只发布了 GNU awk 选项:

gawk 'NF{print$0,gensub("["gensub(/([\[\]^-])/,"\\\\\\1","g",$2)"]","","g",$1)}' input
5
2022-06-07 15:09:56
资源