bash – 如何使用sed在文件中的每一行之前插入一行,原始行的内容
发布时间:2020-12-15 21:55:23 所属栏目:安全 来源:网络整理
导读:我试图使用sed(GNU sed版本4.2.1)在文件中的每一行之前插入一行,该行的内容由字符串围绕. 输入: truncate table ALPHA;truncate table BETA;delete from TABLE_CHARLIE where ID=1; 预期结果: SELECT 'truncate table ALPHA;' from dual;truncate table AL
我试图使用sed(GNU sed版本4.2.1)在文件中的每一行之前插入一行,该行的内容由字符串围绕.
输入: truncate table ALPHA; truncate table BETA; delete from TABLE_CHARLIE where ID=1; 预期结果: SELECT 'truncate table ALPHA;' from dual; truncate table ALPHA; SELECT 'truncate table BETA;' from dual; truncate table BETA; SELECT 'delete from TABLE_CHARLIE where ID=1;' from dual; delete from TABLE_CHARLIE where ID=1; 我试图使用&符号(&)特殊字符,但这似乎不起作用.如果我在替换字符串上放了&符之后的任何内容,则输出不正确. 尝试1: sed -e "s/(.*)/SELECT '&n&/g" input.txt output: SELECT 'truncate table ALPHA; truncate table ALPHA; SELECT 'truncate table BETA; truncate table BETA; SELECT 'delete from TABLE_CHARLIE where ID=1; delete from TABLE_CHARLIE where ID=1; 使用前面的代码,我按预期得到了SELECT’,但是一旦我尝试添加’from dual;在字符串的右侧,事情变得糟糕. 尝试2: sed -e "s/(.*)/SELECT '&' from dual;n&/g" input.txt output: ' from dual;cate table ALPHA; truncate table ALPHA; ' from dual;cate table BETA; truncate table BETA; SELECT 'delete from TABLE_CHARLIE where ID=1;' from dual; 解决方法
您可以利用保留空间临时存储原始行.
sed "h;s/.*/'SELECT '&' from dual;/;p;g" input.txt 或者更可读: sed " h s/.*/'SELECT '&' from dual;/ p g" input.txt 这是命令的细分. >首先,输入的每一行都放在模式空间中. 正如Glenn Jackman指出的那样,你可以用G替换p; g.然后在模式空间中建立一个两行值,然后打印,而不是打印两个单独的模式空间. sed "h;s/.*/'SELECT '&' from dual;/;G" input.txt 此外,您可以向sed命令添加注释,以便您可以了解线路噪声稍后会发生什么:),如果这是在脚本中. sed " # The input line is first copied to the pattern space h # Copy the pattern space to the hold space s/.*/'SELECT '&' from dual;/ # Modify the pattern space p # Print the (modified) pattern space g # Copy the hold space to the pattern space # The output of the pattern space (the original input line) is now printed " input.txt (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- twitter-bootstrap – UIWebView响应“动态类型”,iPad的文
- 有用的Vim插件用于Web开发和设计(php,html,css,javascript)
- angularjs 点击事件获取 点击对象
- Bootstrap 第4章 表单和图片
- scalac -explaintypes:“<:X?”是什么意思?
- 常用shell sed
- 前端每周清单第 11 期:Angular 4.1支持TypeScript 2.3,Vu
- angularjs – 使用Typescript在Ionic 1应用程序中插入Cordo
- angularjs – 为什么我们为Angular 2.0安装了Node.js?
- vim powerline tmux没有扩展以填满整个状态行