我有一个如下所示的列表:
>aaa(+)
AAAAAAAAAA
>bbb(+)
BBBBBBBBBBBBBBBB
>ccc(-)
CCCCCCC
Run Code Online (Sandbox Code Playgroud)
我想使用 awk 在“(+)”或“(-)”之后加入下一行,并使用逗号分隔符,这样它看起来像这样:
>aaa(+),AAAAAAAAAAA
>bbb(+),BBBBBBBBBBBBBBBB
>ccc(-),CCCCCCC
Run Code Online (Sandbox Code Playgroud)
我已经尝试过以下操作(在 bash 中):
cat $file | awk '/(-)/||/(+)/{if (x)print x;x"";}{x=(!x)?$0:x","$0;}END{print x;}' > $new_file
Run Code Online (Sandbox Code Playgroud)
但这似乎给出了这样的结果:
>aaa(+),AAAAAAAAAAA
>aaa(+),AAAAAAAAAAA,>bbb(+),BBBBBBBBBBBBBBBB
>aaa(+),AAAAAAAAAAA,>bbb(+),BBBBBBBBBBBBBBBB,>ccc(-),CCCCCCC
Run Code Online (Sandbox Code Playgroud)
这显然不是我想做的。
任何帮助将不胜感激!
谢谢
这个 awk 一行应该适用于您的示例:
awk '/^>/{printf "%s,",$0;next}7' file
Run Code Online (Sandbox Code Playgroud)
>它将从下面的行开始的行连接起来。如果(+/-)是键,您可以将模式更改为您感兴趣的键。
| 归档时间: |
|
| 查看次数: |
1938 次 |
| 最近记录: |