在 Linux 上使用 sed/awk 将字符串列表转换为单行

sah*_*hil 9 bash shell awk sed

我有一个文件 test.txt,其中包含作为值/字符串列表的数据,并且中间还有一些空行,如下所示

Val1  
Val2  
Val3

Val4  
Val5         
         
     
    
Val6
Run Code Online (Sandbox Code Playgroud)

所需输出:

Val1, Val2, Val3  
Val4, Val5  
Val6
Run Code Online (Sandbox Code Playgroud)

我正在使用以下命令,但它在一行中返回所有可用值。但我只想将连续的值连接在一起(以逗号分隔),并且只要遇到空行(可以有多个连续的空行),就应开始新行。

cat test.txt | sed 's/<[^>]*>//g' | sed 's/ //g' | sed 's/.*/&/;$!s/$/, /' | tr -d '\n'

Ed *_*ton 10

我认为这就是你想要使用任何 awk 做的事情:

$ awk -v RS= -F'\n' -v OFS=', ' '{$1=$1} 1' test.txt
Val1, Val2, Val3
Val4, Val5
Val6
Run Code Online (Sandbox Code Playgroud)