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
中,sub
和gsub
都用于进行字符串替换操作,但它们在替换范围上有所不同。
-
sub
函数:sub
函数用于在字符串中进行一次替换操作。- 它只替换第一个匹配到的模式,并且不会继续搜索或替换其他匹配项。
- 示例:
sub(/pattern/, "replacement", string)
-
gsub
函数:gsub
函数用于在字符串中进行全局替换操作。- 它会替换所有匹配到的模式,而不仅仅是第一个匹配项。
- 示例:
gsub(/pattern/, "replacement", string)
总结一下:
sub
只替换第一个匹配到的模式,而gsub
会替换所有匹配到的模式。- 如果你只想替换第一个匹配项,可以使用
sub
函数;如果需要替换所有匹配项,则使用gsub
函数。
需要注意的是,在使用sub
和gsub
函数时,它们会直接修改传递给它们的字符串参数,而不是返回一个新的字符串。因此,在进行替换操作后,原始字符串将被修改。如果你希望保留原始字符串的副本,可以在传递给函数之前先复制一份。
awk
中的sub
和gsub
函数都用于字符串替换操作,但它们之间有一些区别:
-
替换范围:
sub
函数只替换字符串中的第一个匹配项。它在找到第一个匹配后停止,并返回替换后的字符串。gsub
函数会替换字符串中的所有匹配项。它会继续搜索并替换字符串中的每个匹配项,直到整个字符串都被处理完毕。
-
返回值:
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"。