使用 Mac 终端拆分文本文件段落中的行

使用 Mac 终端拆分文本文件段落中的行

我有以下内容:

sanskrit verse ॥ २॥meaning word-wise of sanskrit।hindi verse।

期望输出为 1 行间隙:

sanskrit verse ॥ २॥

meaning word-wise of sanskrit।

hindi verse।

我有一台 Mac。Windows CMD 提示https://ss64.com/nt/for_f.html

需要拆分以下 11000 页数据。拆分后,sanskrit-wordwiseMeaning-hindi 的上述 3 个部分需要(合并)为 json 的“文本”,同时保留 1 行间隙,如上文(拆分)中所做的那样。真实示例:

症状: 持续性头痛 头痛 头痛 头痛的症状 头痛的症状过敏性皮炎的症状:瘙痒难耐的皮肤病:瘙痒难耐的皮肤病२॥धर्म:--धार्मिकता; प्रोज्झित--悲伤的表情;情况:-- 身体状况不佳; अत्र--यहाँ;症状:--疼痛;疼痛--疼痛的本质; सताम्‌-भक्तों को; वेद्यम्-- जानने योग्य; वास्तवम्‌--वास्तविक;अतन्र--यहाँ; वस्तु--वस्तु,चीज; शिवदम्‌--कल्याण; ताप-त्रय--真正的力量; उन्मूलनम्‌--समूल नष्ट करना;श्रीमतू--सुन्दर; भागवते-- 藝術本身; महा-मुनि--महामुनि ( व्यासदेव ) द्वारा; कृते——愤怒,愤怒的; किम्‌--क्या है; वा--आवश्यकता; परैः--अन्य;疼痛:--痛苦;状态:-- 免疫; हृदि——灵魂;अवरूुध्यते——灵魂; अत्र--यहाँ;护理:-- 身体护理;护理:-- 身体护理;孕期-妊娠-妊娠期间,妊娠纹的形成和妊娠纹的形成成为妈妈是一种幸福的感觉,但当身体变重时,就会带来很大的麻烦。 है।成为妈妈是一种幸福的感觉。艾滋疫苗接种后恢复正常猫鼬科(猫鼬科)是一种动物科动物,它是一种长着长长的尾巴的猫鼬科动物。泰米尔纳德邦有沒有任何特价商品?成为妈妈是一种幸福的感觉,但当身体变重时,就会带来很大的麻烦( अनुशीलन ) 是用于治疗男性生殖器的药物

答案1

将所有文本放在一行上会比较麻烦,但您的要求应该足够简单。

sed 's/\(२॥\|।\)/\
\
/g' filename

将会按照您指定的两个分隔符将文本拆分成单独的行,中间有一个空行。

或许,更好的方法是先在a 之前进行拆分२॥,然后从那里开始。

sed 's/।\([^।]*२॥\)/\
\1/g' filename

...甚至可能替换最后的分隔符,以便始终使用相同的分隔符,因为这样您就可以将其传送到 Awk 并拆分成各个字段并直接转到 JSON。

sed 's/।\([^।]*\)/\
\1।/g' filename |
awk -F '।' 'BEGIN { print "[" }
    { if (s) print ","
      printf "{ \"verse\": \"%s\", \"meaning\": \"%s\", \"translation\": \"%s\"}", $1, $2, $3
      s=1; }
END { print "]" }'

要循环遍历大量文件,可以sed一次性遍历所有文件:

sed 's/।\([^।]*\)/\
\1।/g' * | awk ...

或者循环遍历它们:

for file in *; do
    sed '...' "$file" | awk ...
done

相关内容