string - 使用 awk 或 send 查找字符串并在其前面插入另一个复杂字符串

标签 string search insert sed awk

好吧,我陷入了尝试根据搜索字符串插入一行的情况。我很熟悉使用 AWK 和 SED 使用单个工作或不复杂的东西来完成此操作。

我想如何插入包含单引号和括号的字符串 例如 这会起作用

     awk '/('Backup/ {print "NEWLINE"  } {print}' filename.sh 

这也是如此

    sed -e '/\(\'backup/i\
    newline ' filename.sh

而不是换行工作 - 我想要这个“('删除不好的white.cap;'),”

“和”内包含的所有内容

最佳答案

您尝试执行的操作与 awksed 无关。例如,请参见:

print " '\'' data_between_two_single_quotes '\'' "

第一个 ' 字符关闭开头的 ' shell 字符串文字。 shell 文字不支持反斜杠转义。序列 '\'' 可以解决这个问题:它关闭单引号文字,指定引号字符(使用单引号文字之外支持的转义),然后重新打开一个新的单引号文字。您可以将其视为获取单引号的四字符转义序列。

因此,您的 awk 命令变为:

awk '/\('\''Backup/ {print " ('\''Drop the no good white.cap ;'\'' ) , " } { print }' filename.sh 

您的 sed 命令变为:

sed -e '/\('\''Backup/i\
('\''Drop the no good white.cap ;'\'' ) , ' filename.sh

编辑:

for i in *; do awk -v database="$DB" -v table="$TB" 'BEGIN { print "header" } /backup/ { print " ('\''DROP TABLE " database "." table ";'\'' ) , " }1' "$i" > "${i}.new"; done

说明:

使用 shell for 循环遍历目录中的所有文件。使用 BEGIN block 向文件添加 header 。找到单词 backup 并打印包含 shell 变量 DBTB 的行。 ... }1' 位于 awk 脚本末尾,默认启用打印。它是 { print } 的简写。 HTH。

关于string - 使用 awk 或 send 查找字符串并在其前面插入另一个复杂字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13696674/

相关文章:

c++ - std::string 的引用计数

java - 正则表达式在 2 位数字后分割字符串

java - Lucene 相似类的高级解释?

java - HashMap 搜索和匹配正则表达式

python - 如何使用 python itertools.groupby() 按第一个字符对字符串列表进行分组?

char *str 与 char str[] : segmentation issue

在 Elasticsearch 中搜索带空格的名称(文本)

linq-to-sql - 使用 Linq 插入数据

javascript - 我如何为 video.js 制作一个插件来添加和删除 HTML 标题中的三 Angular 形?

java - 按顺序将项目插入自定义链表