使字符串在bash脚本中更加用户友好/可读
我一直在尝试在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脚本还不熟悉,似乎无法让它正常工作 有人能帮我
(<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("<", "<");
data = MyString.replaceAll(">", ">");
data=MyString.replaceAll(“,”);
data=MyString.replaceAll(“,”);
在bash中,可以使用模式替换。让我们从以下字符串开始:
$ s='<Name>'
让我们对它进行替换:
$ s="${s//</<}"
$ s="${s//>/>}"
$ echo "$s"
<Name>
$s=“${s//}”
$echo“$s”
Bash在globs上工作。如果需要正则表达式,请尝试以下操作:
$ s='<Name>'
$ echo "$s" | sed 's/</</g; s/>/>/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/</</g; s/>/>/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<ssadasdasdsdvvxc
sadssadadsads>dsdsdewpppp
asdasdasddsdasdasassxrh
sadaswqqw<ssadasdasdsdvvxc
sadssadadsads>dsdsdewpppp
b.sh < b.txt