在特定点分隔文件中的每一行
我有一个格式如下的字典文件:
A B [C] D
其中a是一个单词(没有空格),B是另一个单词(里面没有空格),C是发音(这里有空格),D是表达的定义单词(有空格和各种符号)。
我希望将其分成4部分,像这样:
A@@@@B@@@@C@@@@D
这样,第一个空格转换为@@@@
,第一个[
转换为@@@@
,第一个]
转换为@@@@
。这将允许以 CSV 形式轻松导入电子表格(@@@@
用作逗号)。
这可以通过 awk
或 BASH
中的其他工具来实现吗?
更新:
以下是一些示例:
一千零一夜 一千零一夜 [Yi1 qian1 ling2 yi1 ye4] /The Book of One Thousand and One Nights/
灰姑娘 灰姑娘 [Hui1 gu1 niang5] /Cinderella/a sudden rags-to-riches celebrity/
雪白 雪白 [xue3 bai2] /snow white/
将转换为:
一千零一夜@@@@一千零一夜 @@@@Yi1 qian1 ling2 yi1 ye4@@@@ /The Book of One Thousand and One Nights/
灰姑娘@@@@灰姑娘 @@@@Hui1 gu1 niang5@@@@ /Cinderella/a sudden rags-to-riches celebrity/
雪白@@@@雪白 @@@@xue3 bai2@@@@ /snow white/
考虑在第三组 @@@@
之后可能出现任何内容,包括更多空格、[
等.但是,在第三个@@@@
之前,一切在格式上都是一致的。
I have a dictionary file formatted like this:
A B [C] D
Where a is a word (with no spaces), B is another word (with no spaces inside it), C is the pronunciation (there are spaces here), and D is the definition expressed in words (there are spaces, and a variety of symbols).
I wish to separate it into 4 parts, like this:
A@@@@B@@@@C@@@@D
In this way, the first space is converted to @@@@
, the first [
is converted to @@@@
, and the first ]
is converted to @@@@
. This will allow easy import into a spreadsheet as a CSV (@@@@
's serve as the commas).
Can this be achieved with awk
or another tool in BASH
?
Update:
Here are some samples:
一千零一夜 一千零一夜 [Yi1 qian1 ling2 yi1 ye4] /The Book of One Thousand and One Nights/
灰姑娘 灰姑娘 [Hui1 gu1 niang5] /Cinderella/a sudden rags-to-riches celebrity/
雪白 雪白 [xue3 bai2] /snow white/
Would be converted to:
一千零一夜@@@@一千零一夜 @@@@Yi1 qian1 ling2 yi1 ye4@@@@ /The Book of One Thousand and One Nights/
灰姑娘@@@@灰姑娘 @@@@Hui1 gu1 niang5@@@@ /Cinderella/a sudden rags-to-riches celebrity/
雪白@@@@雪白 @@@@xue3 bai2@@@@ /snow white/
Consider that anything might appear after the third set of @@@@
's, including more spaces, [
, etc., however, before the third @@@@
, everything is consistent in format.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我认为 sed 会更容易:
默认情况下(即,如果您在末尾没有指定
g
修饰符),替换每行只能工作一次。或者,如果您想就地执行此操作:(
但并非所有版本的 sed 都支持这一点,并且您将丢失输入文件)
I think sed will be easier:
By default (i.e. if you don't specify the
g
modifier at the end) substitutions only work once per line.Or, if you want to do it in-place:
(but not all versions of sed support that, and you'll lose your input file)