删除第一行中的匹配字符和其他行中下面的所有字符

Remove matching character in the first line and all characters below in other lines

我有一些字符串

M-AA-
-AG--
M---G

我想去掉第一行的-和其他行-位置对应的所有字符,得到

MAA
-G-
M--

我可以知道如何用最简单的 bash 命令来完成吗?

使用 awk [1],如果将字段分隔符设置为空字符串,则可以遍历每个字符:

awk '
    BEGIN {FS = OFS = ""}
    NR == 1 {for (i=1; i<=NF; i++) if ($i == "-") remove[i]}
    {for (i in remove) $i = ""; print}
' file

[1] - 至少是 gawk、mawk 和最近 MacOS 上的默认 awk。