我有这样的数据
ID | Name | Grade
1|Robin Hood so hood | A
2|Gwen Stack DO Rick Stacy |C
3|Bling s/o Peter| A
so 是儿子,DO 是女儿,S/O 是儿子。
我凝视着我如何到达
ID | Name | Grade
1|Robin Hood| A
2|Gwen Stack |C
3|Bling| A
最后我会把这些人邮寄到我不愿意只提供完整字符串的成绩
我尝试使用 while 循环,awk 将第二个字段放入数组,然后 for 循环到数组,这是不必要的
任何 SED 或 AWK 方法 ??
最佳答案
你可以使用这个 sed 命令:
sed -i.bak 's~ [sSdD]/*[oO] [^|]*~~' file
ID | Name | Grade
1|Robin Hood|A
2|Gwen Stack|C
3|Bling|A
或者使用awk
:
awk -F ' [sSdD]/?[oO] [^|]*' '{print $1 $2}' file
ID | Name | Grade
1|Robin Hood|A
2|Gwen Stack|C
3|Bling|A
关于Bash 在模式匹配时拆分字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33810662/