Fish Shell:
使用正则表达式
如何操作:
虽然 Fish Shell 本身没有内置的正则表达式命令,但它有效地使用了支持正则表达式的外部命令,如 grep、sed 和 awk,允许您在脚本中加入正则表达式操作。
使用 grep 进行基本模式匹配
搜索文件中匹配某个模式的行:
grep '^[0-9]+' myfile.txt此命令查找 myfile.txt 中以一个或多个数字开始的行。
使用 sed 进行提取与替换
从文件中提取电话号码:
sed -n '/\([0-9]\{3\}\)-\([0-9]\{3\}\)-\([0-9]\{4\}\)/p' contacts.txt在 data.txt 中替换所有 “foo” 为 “bar”:
sed 's/foo/bar/g' data.txt使用 string 进行基本正则表达式操作
Fish Shell 的 string 命令支持如匹配和替换的简单正则表达式操作:
在字符串中匹配模式:
echo "fish 3.1.2" | string match -r '3\.[0-9]+\.[0-9]+'输出:
3.1.2将 ‘fish’ 后面的数字替换为 ‘X.X.X’:
echo "Welcome to fish 3.1.2" | string replace -ra '([fish]+\s)[0-9\.]+' '$1X.X.X'输出:
Welcome to fish X.X.X使用 awk 进行高级匹配
打印第一列匹配特定模式的数据的第二列:
awk '$1 ~ /^a[0-9]+$/ {print $2}' datafile此命令查找 datafile 中第一列以 “a” 开头后跟一个或多个数字的行,并打印第二列。
通过整合这些外部命令,Fish Shell 程序员可以利用正则表达式的全部力量来执行复杂的文本操作任务,增强 shell 的原生能力。