awk,sed都可以用&号表示查找结果,给查找结果加括号反引号

给命令选项加上反引号

 awk --help | awk '{ gsub(/\-{1,2}[A-Za-z\-]+/,"`&`"); print $0 }'
[root@fedora ~]#  awk --help | awk '{ gsub(/\-{1,2}[A-Za-z\-]+/,"`&`"); print $0 }'
用法:awk [POSIX 或 GNU 风格选项] `-f` 脚本文件 [`--`] 文件 ...
用法:awk [POSIX 或 GNU 风格选项] [`--`] '程序' 文件 ...
POSIX 选项:            GNU 长选项:(标准)
        `-f` 脚本文件           `--file`=脚本文件
        `-F` fs                 `--field-separator`=fs
        `-v` var=val            `--assign`=var=val
短选项:                GNU 长选项:(扩展)
        `-b`                    `--characters-as-bytes`
        `-c`                    `--traditional`
        `-C`                    `--copyright`
        `-d`[文件]              `--dump-variables`[=文件]
        `-D`[文件]              `--debug`[=文件]
        `-e` '程序文本' `--source`='程序文本'
        `-E` 文件                       `--exec`=文件
        `-g`                    `--gen-pot`
        `-h`                    `--help`
        `-i` 包含文件           `--include`=包含文件
        `-I`                    `--trace`
        `-l``--load`=`-L`[fatal|invalid|no`-ext`]    `--lint`[=fatal|invalid|no`-ext`]
        `-M`                    `--bignum`
        `-N`                    `--use-lc-numeric`
        `-n`                    `--non-decimal-data`
        `-o`[文件]              `--pretty-print`[=文件]
        `-O`                    `--optimize`
        `-p`[文件]              `--profile`[=文件]
        `-P`                    `--posix`
        `-r`                    `--re-interval`
        `-s`                    `--no-optimize`
        `-S`                    `--sandbox`
        `-t`                    `--lint-old`
        `-V`                    `--version`

如需提交错误报告,请使用“gawkbug”程序。
详细指引可参考“gawk.info”中的“Bugs”页,
它位于“Reporting Problems and Bugs”一节。您也可以在
https://www.gnu.org/software/gawk/manual/html_node/Bugs.html
中找到相同的信息。
请勿在群组 comp.lang.awk 上提交错误报告,
或者使用 Stack Overflow 等论坛报告错误。

可以在以下位置获取 gawk 的源代码
https://ftp.gnu.org/gnu/gawk/gawk-5.2.2.tar.gz

sed --help | sed  -E "s/\-{1,2}[a-zA-Z\-]+/\`&\`/g"
sed --help | sed  -e "s/\-\{1,2\}[a-zA-Z\-]\+/\`&\`/g"
[root@fedora txt]# sed --help | sed  -e "s/\-\{1,2\}[a-zA-Z\-]\+/\`&\`/g"
用法: sed [选项]... {脚本(如果没有其他脚本)} [输入文件]...

  `-n`, `--quiet`, `--silent`
                 取消自动打印模式空间
      `--debug`
                 对程序运行进行标注
  `-e` 脚本, `--expression`=脚本
                 添加“脚本”到程序的运行列表
  `-f` 脚本文件, `--file`=脚本文件
                 添加“脚本文件”到程序的运行列表
  `--follow-symlinks`
                 直接修改文件时跟随软链接
  `-i`[扩展名], `--in-place`[=扩展名]
                 直接修改文件(如果指定扩展名则备份文件)
  `-c`, `--copy`
                 use copy instead of rename when shuffling files in `-i` mode
  `-b`, `--binary`
                 does nothing; for compatibility with WIN32/CYGWIN/MSDOS/EMX
                 (open files in binary mode; CR+LF are not processed specially)
  `-l` N, `--line-length`=N
                 指定“l”命令的换行期望长度
  `--posix`
                 关闭所有 GNU 扩展
  `-E`, `-r`, `--regexp-extended`
                 在脚本中使用扩展正则表达式
                 (为保证可移植性使用 POSIX `-E`)。
  `-s`, `--separate`
                 将输入文件视为各个独立的文件而不是单个
                 长的连续输入流。
      `--sandbox`
                 在沙盒模式中进行操作(禁用 e/r/w 命令)。
  `-u`, `--unbuffered`
                 从输入文件读取最少的数据,更频繁的刷新输出
  `-z`, `--null-data`
                 使用 NUL 字符分隔各行
      `--help`     打印帮助并退出
      `--version`  输出版本信息并退出

如果没有 `-e`, `--expression`, `-f``--file` 选项,那么第一个非选项参数被视为
sed脚本。其他非选项参数被视为输入文件,如果没有输入文件,那么程序将从标准
输入读取数据。
GNU sed 主页:<https://www.gnu.org/software/sed/>。
使用 GNU 软件的一般性帮助:<https://www.gnu.org/gethelp/>。
请将错误报告发送至:<bug`-sed`@gnu.org>

在awk中 sub函数 和 gsub函数 的区别

awk中,subgsub都用于进行字符串替换操作,但它们在替换范围上有所不同。

  1. sub函数:

    • sub函数用于在字符串中进行一次替换操作。
    • 它只替换第一个匹配到的模式,并且不会继续搜索或替换其他匹配项。
    • 示例:sub(/pattern/, "replacement", string)
  2. gsub函数:

    • gsub函数用于在字符串中进行全局替换操作。
    • 它会替换所有匹配到的模式,而不仅仅是第一个匹配项。
    • 示例:gsub(/pattern/, "replacement", string)

总结一下:

  • sub只替换第一个匹配到的模式,而gsub会替换所有匹配到的模式。
  • 如果你只想替换第一个匹配项,可以使用sub函数;如果需要替换所有匹配项,则使用gsub函数。

需要注意的是,在使用subgsub函数时,它们会直接修改传递给它们的字符串参数,而不是返回一个新的字符串。因此,在进行替换操作后,原始字符串将被修改。如果你希望保留原始字符串的副本,可以在传递给函数之前先复制一份。

awk中的subgsub函数都用于字符串替换操作,但它们之间有一些区别:

  1. 替换范围:

    • sub函数只替换字符串中的第一个匹配项。它在找到第一个匹配后停止,并返回替换后的字符串。
    • gsub函数会替换字符串中的所有匹配项。它会继续搜索并替换字符串中的每个匹配项,直到整个字符串都被处理完毕。
  2. 返回值:

    • sub函数返回替换后的字符串。你可以将结果赋值给一个变量或直接打印出来。
    • gsub函数直接修改原始字符串,不返回新的字符串。它会在原始字符串中进行替换操作,因此你可以直接查看或操作修改后的原始字符串。

下面是一个示例来说明它们的区别:

假设有一个字符串"apple banana apple orange",我们想要将其中的"apple"替换为"fruit"。

使用sub函数:

echo "apple banana apple orange" | awk '{ sub(/apple/, "fruit"); print }'

输出:

fruit banana apple orange

使用gsub函数:

echo "apple banana apple orange" | awk '{ gsub(/apple/, "fruit"); print }'

输出:

fruit banana fruit orange

从上面的示例可以看出,sub只替换了第一个出现的"apple",而gsub替换了所有出现的"apple"。

你可能感兴趣的:(文本,正则RegExp,text,linux,bash)