Skip to main content
extended solution
Source Link
RomanPerekhrest
  • 30.9k
  • 5
  • 47
  • 68

sed approach:

sed -E 's~("MyPorts.*\},|"PROTO[^"]+"| +PROTO[^"]+)~~' file

The output:

aaaaaaaa  
bbbbbbbbb
cccc"TEST"ccccc

Bonus approach for one-line string input:

$ s='aaaa"MyPorts":{"80/tcp":{},"8080/tcp":{},"9080/tcp":{},"9090/tcp":{}},aaaabbbb"PROTO 9080/tcp 9090/tcp"bbbbbcccc"TES^CPROTO 80 8080"ccccc'

$ sed -En 's~("MyPorts.+\},|"PROTO[^"]+"| +PROTO[^"]+)~~gp' <<<"$s"
aaaaaaaabbbbbbbbbcccc"TEST"ccccc

sed approach:

sed -E 's~("MyPorts.*\},|"PROTO[^"]+"| +PROTO[^"]+)~~' file

The output:

aaaaaaaa  
bbbbbbbbb
cccc"TEST"ccccc

sed approach:

sed -E 's~("MyPorts.*\},|"PROTO[^"]+"| +PROTO[^"]+)~~' file

The output:

aaaaaaaa  
bbbbbbbbb
cccc"TEST"ccccc

Bonus approach for one-line string input:

$ s='aaaa"MyPorts":{"80/tcp":{},"8080/tcp":{},"9080/tcp":{},"9090/tcp":{}},aaaabbbb"PROTO 9080/tcp 9090/tcp"bbbbbcccc"TES^CPROTO 80 8080"ccccc'

$ sed -En 's~("MyPorts.+\},|"PROTO[^"]+"| +PROTO[^"]+)~~gp' <<<"$s"
aaaaaaaabbbbbbbbbcccc"TEST"ccccc
Source Link
RomanPerekhrest
  • 30.9k
  • 5
  • 47
  • 68

sed approach:

sed -E 's~("MyPorts.*\},|"PROTO[^"]+"| +PROTO[^"]+)~~' file

The output:

aaaaaaaa  
bbbbbbbbb
cccc"TEST"ccccc