2

我有关于文本解析的快速问题,例如:

输入="abcdef g"
模式="ae g"

应修改 INPUT 变量,以便删除 PATTERN 字符,因此在此示例中:

输出="bcd f"

我试过用

tr -d $x
在'PATTERN'的for循环计数中,但我不知道如何为下一次循环迭代传递输出。

编辑:如果 INPUT 和 PATTERN 变量包含字符串而不是单个字符怎么办???

4

2 回答 2

3

从哪里来$x?无论如何,你很接近:

tr -d "$PATTERN" <<< $INPUT

要将结果分配给变量,只需使用

OUTPUT=$(tr -d "$PATTERN" <<< $INPUT)

请注意,空格也会被删除,因为它们是 $PATTERN 的一部分。

于 2012-06-25T07:37:44.163 回答
2

使用参数替换的纯 Bash:

INPUT="a b c d e f g"
PATTERN="a e g"

for p in $PATTERN; do
  INPUT=${INPUT/ $p/}
  INPUT=${INPUT/$p /}
done
echo  "'$INPUT'"

结果:

'b c d f'
于 2012-06-25T09:57:00.040 回答