使用 sed 或 awk 或 perl 或 bash 将字符串拆分为两部分

Sin*_*ity 2 bash sed awk perl

我有这样的字符串:

Grades ABCDEF-123456
Run Code Online (Sandbox Code Playgroud)

我想把这个字符串分成两部分,如下所示

Grades ABCDEF
Grades 123456
Run Code Online (Sandbox Code Playgroud)

我怎样才能在 bash 中做到这一点?

小智 6

echo Grades "ABCDE-12345" | sed 's/-/ /g' | awk '{ print $1" "$2"\n"$1" "$3'}
Grades ABCDE
Grades 12345
Run Code Online (Sandbox Code Playgroud)

或根据@steeldriver

awk -F'[ -]' '{print $1, $2; print $1, $3}'
Run Code Online (Sandbox Code Playgroud)

  • 这里确实不需要 `sed` - 只需将 `FS` 设置为包含 `-` 即 `awk -F'[ -]' '{print $1, $2; 打印 $1, $3}'` (2认同)