Vil*_*age 3 awk split replace sed
我有一个格式如下的字典文件:
A B [C] D
Run Code Online (Sandbox Code Playgroud)
其中a是一个单词(没有空格),B是另一个单词(里面没有空格),C是发音(这里有空格),D是用单词表示的定义(有空格,有多种符号).
我希望将它分为4个部分,如下所示:
A@@@@B@@@@C@@@@D
Run Code Online (Sandbox Code Playgroud)
以这种方式,第一空间被转换为@@@@,所述第一[被转换成@@@@,并且所述第一]转换为@@@@.这样可以轻松导入电子表格中作为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/
Run Code Online (Sandbox Code Playgroud)
将转换为:
?????@@@@????? @@@@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/
Run Code Online (Sandbox Code Playgroud)
考虑到任何东西可能出现在第三组之后@@@@,包括更多空格[等,但是,在第三组之前@@@@,一切都是格式一致的.
我认为sed会更容易:
sed -e 's/ /@@@@/' -e 's/ [/@@@@/' -e 's/] /@@@@/' infile > outfile
Run Code Online (Sandbox Code Playgroud)
默认情况下(即如果您未g在末尾指定修饰符),每行只能使用一次替换.
或者,如果您想要就地执行此操作:
sed -i -e 's/ /@@@@/' -e 's/ [/@@@@/' -e 's/] /@@@@/' infile
Run Code Online (Sandbox Code Playgroud)
(但并非所有版本的sed支持,你将丢失输入文件)
| 归档时间: |
|
| 查看次数: |
77 次 |
| 最近记录: |