我有一些文本文件,其中每个文件将有如下信息
235.91 245.67 B: some information here
246.79 246.99 A: some other information here,
more information here,
and may be here
247.45 248.99 A: some other text here,
some more here
249.98 ----
Run Code Online (Sandbox Code Playgroud)
并且模式重复
我希望文本安排如下:
235.91 245.67 B: some information here
246.79 246.99 A: some other information here, more information here, and may be here
247.45 248.99 A: some other text here. some more here
249.98 -----
Run Code Online (Sandbox Code Playgroud)
这意味着我想合并两个匹配模式之间的所有行(它们之间有空格)
我希望每一行都以数字作为模式开始.数字始终有一个小数点,小数点后有两位数.图案与下一个图案之间的线数不同(可以有一条或多条线或根本没有线).
有人可以使用shell脚本帮助我这样做,最好使用awk吗?
我有一个文件,比如A.txt,它有大约80,000行,但有2个字段.示例行如下所示:
utt1 f
utt2 f
utt3 m
utt4 f
Run Code Online (Sandbox Code Playgroud)
我有第二个文件B.txt,它比A.txt有更多的行,并有两个字段.示例行如下所示
utt1_1 somethingHere
utt1_2 somethingElse
utt2_1 someText
utt2_2 somemore
utt2_3 someMore
utt3_1 someText
utt4_1 somemore
utt4_2 abcd
utt4_3 aanan
Run Code Online (Sandbox Code Playgroud)
B.txt中的第一个字段与A.txt中的第一个字段基本相同,后跟_something(每行重复可变次数).
我的任务是创建一个看起来像这样的文件
utt1_1 f
utt1_2 f
utt2_1 f
utt2_2 f
utt2_3 f
utt3_1 m
utt4_1 f
utt4_2 f
utt4_3 f
Run Code Online (Sandbox Code Playgroud)
'f'和'm'开始于性别.换句话说,我想做的是从A.txt和grep中获取utt和性别信息,以获取B.txt中的话语,并将第一个字段映射到正确的性别.我正在使用while循环,如下所示:
while read utt gen; do
grep $utt B.txt | awk -v gen=$gen '{print $1" "gen}'
done < A.txt
Run Code Online (Sandbox Code Playgroud)
因为,我在一个循环中完成它,并且A.txt的长度很大,因此需要花费大量时间来完成任务.你能建议我使用bash更快的方式吗?
谢谢