首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在特定点分隔文件中的每一行

在特定点分隔文件中的每一行
EN

Stack Overflow用户
提问于 2011-11-20 14:37:36
回答 1查看 78关注 0票数 3

我有一个字典文件,格式如下:

代码语言:javascript
复制
 A B [C] D

其中a是一个单词(没有空格),B是另一个单词(里面没有空格),C是发音(这里有空格),D是用单词表达的定义(有空格和各种符号)。

我想把它分成4个部分,就像这样:

代码语言:javascript
复制
 A@@@@B@@@@C@@@@D

这样,第一个空格转换为@@@@,第一个[转换为@@@@,第一个]转换为@@@@。这将允许作为CSV (@@@@用作逗号)轻松导入到电子表格中。

这是否可以使用awkBASH中的其他工具来实现

更新:

以下是一些示例:

代码语言:javascript
复制
一千零一夜 一千零一夜 [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/

将转换为:

代码语言:javascript
复制
一千零一夜@@@@一千零一夜 @@@@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/

考虑到任何东西都可能出现在第三组@@@@之后,包括更多的空格、[等,然而,在第三组@@@@之前,所有内容在格式上都是一致的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-11-20 14:41:05

我认为sed会更简单:

代码语言:javascript
复制
sed -e 's/ /@@@@/' -e 's/ [/@@@@/' -e 's/] /@@@@/' infile > outfile

默认情况下(例如,如果您没有在末尾指定g修饰符),替换在每行中只起作用一次。

或者,如果您想就地执行此操作:

代码语言:javascript
复制
sed -i -e 's/ /@@@@/' -e 's/ [/@@@@/' -e 's/] /@@@@/' infile

(但并非所有的sed版本都支持此功能,您将丢失您的输入文件)

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8199913

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档