如何修改文件或stdin后的拆分模式,但下一个拆分模式没有被分隔或排除,假设拆分模式可以无限发生?
简单地说,第一个拆分模式是如何划分的,接下来又是如何划分的?
主要使用sed或如果不能使用,请使用其他工具,如awk和其他。
投入:
WATER[split]FIRE[split]AIR[split]我试过:
~$ echo WATER[split]FIRE[split]AIR | sed s/.*\\[split]//我的结果是:
AIR我想要的输出如下:
FIRE[split]AIR请怎么做?
发布于 2017-05-21 12:51:28
假设您没有在多行缓冲区上创建和操作:
$ echo 'WATER[split]FIRE[split]AIR' | sed 's/\[split]/\n/; s/.*\n//'
FIRE[split]AIR如果您是在多行缓冲区上操作,则不能指望输入中没有新行或任何其他字符,因此必须创建一个(下面的#),因此要做到这一点,应该是:
$ echo 'WATER[split]FIRE[split]AIR' |
sed 's/@/@A/g; s/#/@B/g; s/\[split]/#/; s/.*#//; s/@B/#/g; s/@A/@/g'
FIRE[split]AIR第一个脚本只在接受\n为换行符的sed中工作,其他sed使用反斜杠,后面跟着文字换行符:
$ echo 'WATER[split]FIRE[split]AIR' | sed 's/\[split]/\
/; s/.*\
//'
FIRE[split]AIR发布于 2017-05-21 07:18:36
Bash和参数替换
$ foo=WATER[split]FIRE[split]AIR[split]
$ bar=${foo#*\[split\]} # head off
$ echo ${bar%\[split\]*} # tail off
FIRE[split]AIR${var%Pattern}从$var中删除与$var后端匹配的最短的$Pattern部分${var#Pattern}从$var中删除与$var前端匹配的$Pattern最短部分发布于 2017-05-21 07:50:46
echo WATER[split]FIRE[split]AIR | sed 's/\[split]/[SPLIT2]/; s/.*\[SPLIT2]//'https://stackoverflow.com/questions/44093254
复制相似问题