ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

文本处理 – 从android shell使用sed

2019-08-16 23:24:17  阅读:337  来源: 互联网

标签:android sed text-processing


我熟悉android终端仿真上的sed:我使用的sed中包含的sed版本安装在我的无根索尼设备上. sed –version(或toybox sed –version)给出了相同的结果:

这不是GNU sed 9.00

现在,我从toybox sed阅读了特定的手册,并尝试了一些简单的一个衬垫(想法是将那些包含在我可以手动启动的脚本中).现在我注意到的第一件事是,如果我尝试将脚本包含在简单括号中(es sed -e’s / foo / bar /’文件),则无法正确解释.

该命令使用双括号,但我遇到脚本解释方式的问题(或者我做错了).例.我试着替换文件中的单词.该文件是一个字符串“stringa di test”,我打算将其转换为“stringa di prova”.结果是字符串被替换,但前一个字符串被附加到该行的其余部分:

user:$ls
 file.txt
 n.sh
 s.sh
 save
 script_gian.sh
 sed_script
user: $cat file.txt
 stringa di test
user:$sed -i -e "s/test/prova/g" file.txt                        <
 ^C1|user:$cat file.txt
stringa di test
user:$ sed -r -e "s/test/prova/1" file.txt > f.txt                <
user:$ls
 f.txt
 file.txt
 file.txtFD4OVI
 n.sh
 s.sh
 save
 script_gian.sh
 sed_script
user:$cat f.txt
stringa di provastringa di test
user:$cat file.txt
 stringa di test
user: $

另一个有趣的事情是尝试使用g标志(全局)导致sed挂起并且不得不用CONTROL C中断.-i命令也导致sed挂起.

我还尝试将一个字符串传递给sed:

cat file.txt | sed -e "s/foo/bar/" > newfile.txt

但结果完全一样.字符串中的单词被替换,替换之前的行就是在此之后附加的(这也删除了行中的其余字符) –
我是否错误地使用了sed或者我试图使用的sed版本中有什么东西?

解决方法:

我可以确认(感谢#toybox irc频道)问题确实是toybox sed中的一个错误,本来应该已经解决了,但Android M仍然附带了过时版本的toybox.这些是玩具箱邮件列表的链接(唉,我已经错过了),讨论了这些问题:

http://lists.landley.net/pipermail/toybox-landley.net/2016-January/007897.html

http://lists.landley.net/pipermail/toybox-landley.net/2015-September/004415.html

太糟糕了,我将不得不等待未来Android更新的当前版本的toybox.

标签:android,sed,text-processing
来源: https://codeday.me/bug/20190816/1672093.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有