Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Awk:单独编辑数据块_Awk - Fatal编程技术网

Awk:单独编辑数据块

Awk:单独编辑数据块,awk,Awk,我的文本文件被细分为块,看起来像这样: foo:a 酒吧:b 蝙蝠:c foo:d 酒吧:e 蝙蝠:f 是否有一种方法可以单独编辑每个块(即为块运行一组规则,然后移动到下一个块)? 结果应该如下所示: foo:ab 酒吧:BC 蝙蝠:c foo:de 酒吧:EF 蝙蝠:f 我不知道如何使用适用于整个文件的规则来实现这一点。这对您有用吗 awk -v RS="" -F'\n' '{for(i=1;i<=NF-1;i++){split($(i+1),x," ");$i=$i" "x[2];

我的文本文件被细分为块,看起来像这样:

foo:a
酒吧:b
蝙蝠:c

foo:d
酒吧:e
蝙蝠:f

是否有一种方法可以单独编辑每个块(即为块运行一组规则,然后移动到下一个块)?
结果应该如下所示:

foo:ab
酒吧:BC
蝙蝠:c

foo:de
酒吧:EF
蝙蝠:f


我不知道如何使用适用于整个文件的规则来实现这一点。

这对您有用吗

awk -v RS="" -F'\n' '{for(i=1;i<=NF-1;i++){split($(i+1),x," ");$i=$i" "x[2];print $i}print $NF;print RS}' file

awk-v RS=“”-F'\n'{for(i=1;i使用
awk
可以根据需要设置记录分隔符和字段分隔符。默认情况下,字段分隔符为空白,重新编码分隔符为
\n
。要将记录分隔符设置为空行,字段分隔符设置为

awk '{printf "%s:%s%s\n%s:%s%s\n%s:%s\n\n",$1,$2,$4,$3,$4,$6,$5,$6}' FS=: RS= file
foo: a b
bar: b c
bat: c

foo: d e
bar: e f
bat: f

您没有说明要做什么,我猜数据转换只是一个示例,因此可能是一个更好的方法。

是的,实际数据有点复杂,但我认为这正是我想要的。谢谢。
awk '{printf "%s:%s%s\n%s:%s%s\n%s:%s\n\n",$1,$2,$4,$3,$4,$6,$5,$6}' FS=: RS= file
foo: a b
bar: b c
bat: c

foo: d e
bar: e f
bat: f