使用 sed 处理每个字符直到给定序列
Using sed to dispose of every character until a given sequence
我正在尝试使用 sed 将流 9906884*n.6[2213]
转换为 9906884[2213]
。我目前正在使用 awk '{A=; print A }'
将其添加到我提到的流中,但我正在尝试使用 sed 将 *n.6[2213]
转换为 [2213]
。
是否有合适的 sed 正则表达式 "grab everything before '\[[0-9]*\]'" 即,再次查找“[”和任意数量的数字,然后再查找“]”。如果是这样,我将简单地使用 sed 's/the_sed_regex//g'
来处理前面 awk
语句中的前几个字符。
使用 BASH 你可以:
s='*n.6[2213]'
echo "${s/*[/[}"
[2213]
或使用 sed:
echo "$s" | sed 's/.*\[/[/'
[2213]
有很多方法可以获得您想要的输出。例如:
$ echo "9906884*n.6[2213]" | awk -F'[\[*]' '{print "[" }'
9906884[2213]
或
$ echo "9906884*n.6[2213]" | sed 's/\*[^[]*//'
9906884[2213]
这两种方法中的任何一种都从输入中删除 *
和 [
之间的部分。在 awk 版本中,[
被删除并替换。
我正在尝试使用 sed 将流 9906884*n.6[2213]
转换为 9906884[2213]
。我目前正在使用 awk '{A=; print A }'
将其添加到我提到的流中,但我正在尝试使用 sed 将 *n.6[2213]
转换为 [2213]
。
是否有合适的 sed 正则表达式 "grab everything before '\[[0-9]*\]'" 即,再次查找“[”和任意数量的数字,然后再查找“]”。如果是这样,我将简单地使用 sed 's/the_sed_regex//g'
来处理前面 awk
语句中的前几个字符。
使用 BASH 你可以:
s='*n.6[2213]'
echo "${s/*[/[}"
[2213]
或使用 sed:
echo "$s" | sed 's/.*\[/[/'
[2213]
有很多方法可以获得您想要的输出。例如:
$ echo "9906884*n.6[2213]" | awk -F'[\[*]' '{print "[" }'
9906884[2213]
或
$ echo "9906884*n.6[2213]" | sed 's/\*[^[]*//'
9906884[2213]
这两种方法中的任何一种都从输入中删除 *
和 [
之间的部分。在 awk 版本中,[
被删除并替换。