使字符串在bash脚本中更加用户友好/可读

使字符串在bash脚本中更加用户友好/可读,bash,Bash,我一直在尝试在bash脚本中将以下字符串转换为更可读、更可用的形式。某些部件不是静态的 (<font color='whisper'>[ <name shortname='UserName' src='whisper-from'>UserName</name> whispers, "test" to you. ]</font> 我已经用Java、PHP甚至VB6一次又一次地这样做了。不过,我对bash脚本还不熟悉,似乎无法让它正常工作 有人能帮我

我一直在尝试在bash脚本中将以下字符串转换为更可读、更可用的形式。某些部件不是静态的

(<font color='whisper'>[ <name shortname='UserName' src='whisper-from'>UserName</name> whispers, "test" to you. ]</font>
我已经用Java、PHP甚至VB6一次又一次地这样做了。不过,我对bash脚本还不熟悉,似乎无法让它正常工作

有人能帮我把这个Java代码转换成bash脚本吗

 data = MyString.replaceAll("<.*?>", "");
 data = MyString.replaceAll("&lt;", "<");
 data = MyString.replaceAll("&gt;", ">");
data=MyString.replaceAll(“,”);
data=MyString.replaceAll(“,”);

在bash中,可以使用模式替换。让我们从以下字符串开始:

$ s='&lt;Name&gt;'
让我们对它进行替换:

$ s="${s//&lt;/<}"
$ s="${s//&gt;/>}"
$ echo "$s"
<Name>
$s=“${s//}”
$echo“$s”
Bash在globs上工作。如果需要正则表达式,请尝试以下操作:

$ s='&lt;Name&gt;'
$ echo "$s" | sed 's/&lt;/</g; s/&gt;/>/g; s/<[^>]*>/<>/g'
<>
$s='Name'
$echo“$s”| sed的///g;s/]*>//g'
在更复杂的示例中:

$ MyStr='(<font color='whisper'>[ <name shortname='UserName' src='whisper-from'>UserName</name> whispers, "test" to you. ]</font>'
$ echo "$MyStr" | sed 's/&lt;/</g; s/&gt;/>/g; s/<[^>]*>//g'
([ UserName whispers, "test" to you. ]
$MyStr='([用户名对您耳语,“测试”。)
$echo“$MyStr”| sed's///g;s//*>/g'
([用户名对您耳语,“测试”。)

单独使用
sed
,或者,既然您提到了
bash
,在
bash
脚本中使用
sed
(例如
b.sh
):

输出结果:

asdasdasddsdasdasassxrh
sadaswqqw<ssadasdasdsdvvxc
sadssadadsads>dsdsdewpppp
ASDASDSDSDASSXRH
SADASWQWDSDSDEWPPP
用法:

b.sh < b.txt
b.sh

注意:我将每个replace all分解为单独的
sed
调用,以防您想修改或添加更多格式更改。

我很确定堆栈溢出编辑器弄乱了您的字符串格式。我缩进了字符串以防止呈现HTML实体,但您刚刚撤消了大部分编辑…您必须进行索引用四个空格填充你的代码。这个复杂的例子似乎完全符合我的需要。我在看sed,但就是不知道如何在bash中使用正则表达式。谢谢!
asdasdasdds<.*?>dasdasassxrh
sadaswqqw&lt;ssadasdasdsdvvxc
sadssadadsads&gt;dsdsdewpppp
asdasdasddsdasdasassxrh
sadaswqqw<ssadasdasdsdvvxc
sadssadadsads>dsdsdewpppp
b.sh < b.txt