我有这个 tsv(制表符分隔)文件,有 2 列。 第一列是单个(或一组)单词,第二列是它的含义。
测试文件
test try
test "a short exam to measure somebody's knowledge
or skill in something."
testing examine
我正在尝试合并第二行和第三行,因为它用双引号引起来。例如
预期输出
test try
test "a short exam to measure somebody's knowledge or skill in something."
testing examine
我试过这个:
awk -v FS='\t' -v OFS='\t' '{print $1, $2}' test.tsv
test try
test "a short exam to measure somebody's knowledge
or skill in something."
testing examine
但它不会合并第 2 行和第 3 行。我尝试了“partsplit”并将所有行合并在一起。
awk 'BEGIN { FS=OFS="\t"}
{
if (patsplit($0,a,/"[^"]+"/,s)) {
gsub(/\n/,"",a[1])
printf "%s%s%s", s[0],a[1],s[1]
}
else
printf "%s", $0
printf ";"
}' test.tsv
我需要像原始文件一样保持制表符分隔格式。唯一需要的更改是将文本合并在 2 个双引号中。
当第二个字段以双引号开头时,您可以将输出记录分隔符设置为空字符串,当记录以双引号结尾时,再次将其设置为换行符:
awk -F'\t' '$2~/^"/{ORS=""}/"$/{ORS="\n"}1'