我有一个文件test.txt,其中包含作为值/字符串列表的数据,中间还有一些空行,如下所示
Val1
Val2
Val3
Val4
Val5
Val6
所需输出:
Val1, Val2, Val3
Val4, Val5
Val6
我正在使用下面的命令,但是它在一行中返回所有可用的值。但是我只想将连续的值连接在一起(逗号分隔),并且当它遇到空行时(可以有多个连续的空行),应该开始一个新行。cat test.txt | sed 's/<[^>]*>//g' | sed 's/ //g' | sed 's/.*/&/;$!s/$/, /' | tr -d '\n'
6条答案
按热度按时间uinbv5nw1#
我想这就是你想做的,使用任何awk:
mpbci0fu2#
使用
gnu-sed
可以读取整个文件在围绕单个换行符的2个捕获组中捕获2个非换行符,并在替换中使用2个反向引用,中间使用
,
然后用一个换行符替换两个或多个换行符。
产出
只使用sed
-E
,您可以使用阅读所有行的标签来完成相同的操作:jq6vz3qz3#
***第一个解决方案:***仅使用显示的示例,请尝试以下GNU
awk
代码。***第二个解决方案:***使用GNU
awk
和您展示的示例,请尝试以下awk
代码。yptwkmov4#
这可能对您有用(GNU sed):
追加以下行,如果该行为空,则删除并打印结果。
否则,将换行符替换为
,
并重复。vxbzzdmp5#
GNU/BSD
ed
是否可用/可接受。在一行中,类似于:
nnvyjq4y6#
试试这个:
输出:
确认1、确认2、确认3
瓣膜4、瓣膜5
Val6