1.nature(630):从气候模式相互作用中解释厄尔尼诺现象的可预测性
2.Linux文本匹配命令grep与fgrep使用完全讲解
nature(630):从气候模式相互作用中解释厄尔尼诺现象的可预测性
El Niño–Southern Oscillation (ENSO) has a significant impact on global environmental and socioeconomic factors via teleconnections. The prediction skill of ENSO has improved substantially over the decades due to enhanced understanding and modeling efforts. However, achieving accurate forecasts with a lead time longer than one year remains a challenge. ENSO originates from coupled ocean-atmosphere interactions in the tropical Pacific, yet recent studies indicate that interactions with other ocean basins might improve ENSO prediction.
Various climate modes interact with ENSO, such as the North and South Pacific Meridional Modes (NPMM and SPMM), the Indian Ocean Basin (IOB) mode, the Indian Ocean Dipole (IOD) mode, the Southern Indian Ocean Dipole (SIOD) mode in the Indian Ocean, Tropical North Atlantic (TNA) variability, the Atlantic Niño (ATL3), and the South Atlantic Subtropical Dipole (SASD) mode in the Atlantic Ocean. Previous studies have designed forecast experiments to illustrate the role of other ocean basins in ENSO predictability, employing simple coupled models, atmosphere-ocean coupled general circulation models (CGCMs), and linear inverse models. Despite these efforts, quantifying the relative contributions of these ocean basins to ENSO predictability remains a challenge. CGCMs often exhibit significant biases in simulating the climate mean state and ENSO dynamics, complicating the assessment of other ocean basins' influence on ENSO predictability. Linear inverse models are not capable of fully capturing ENSO's nonlinear dynamics and seasonality, making it difficult to determine the sources of skilful predictions.
In this study, an extended nonlinear recharge oscillator (XRO) model is introduced. This model shows superior ENSO forecasting skill at lead times up to - months, surpassing global climate models and comparable to the most advanced artificial intelligence forecasts. The XRO model incorporates the core ENSO dynamics and the seasonal modulation of ENSO's interactions with other modes of variability in the global oceans in a parsimonious manner. The enhanced long-range forecast skill of ENSO is traced to the initial conditions of other climate modes through their memory and interactions with ENSO, quantifiable in terms of these modes' contributions to ENSO amplitude. Reforecasts using the XRO model, trained on climate model output, reveal that reduced biases in both model ENSO dynamics and climate mode interactions can lead to more accurate ENSO forecasts. The XRO framework provides a comprehensive approach to understanding ENSO's global multi-timescale interactions, highlighting promising targets for enhancing ENSO simulations and forecasts.
Linux文本匹配命令grep与fgrep使用完全讲解
grepgrep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。Unix的grep家族包括grep、egrep和fgrep。egrep和fgrep的126邮箱 编辑源码命令只跟grep有很小不同。egrep是grep的扩展,支持更多的re元字符, fgrep就是fixed grep或fast grep,它们把所有的字母都看作单词,也就是说,正则表达式中的元字符表示回其自身的字面意义,不再特殊。Linux使用GNU版本的grep。它功能更强,可以通过-G、-E、-F命令行选项来使用egrep和fgrep的功能。
grep的工作方式是这样的,它在一个或多个文件中搜索字符串模板。如果模板包括空格,opencv逆透视源码则必须被引用,模板后的所有字符串被看作文件名。搜索的结果被送到屏幕,不影响原文件内容。
grep可用于shell脚本,因为grep通过返回一个状态值来说明搜索的状态,如果模板搜索成功,则返回0,如果搜索不成功,则返回1,kali源码漏洞扫描如果搜索的文件不存在,则返回2。我们利用这些返回值就可进行一些自动化的文本处理工作。
grep --help
匹配模式选择:
-E, --extended-regexp 扩展正则表达式egrep
-F, --fixed-strings 一个换行符分隔的字符串的集合fgrep
-G, --basic-regexp 基本正则
-P, --perl-regexp 调用的perl正则
-e, --regexp=PATTERN 后面根正则模式,默认无
-f, --file=FILE 从文件中获得匹配模式
-i, --ignore-case 不区分大小写
-w, --word-regexp 匹配整个单词
-x, --line-regexp 匹配整行
-z, --null-data 一个 0 字节的数据行,但不是空行
杂项:
-s, --no-messages 不显示错误信息
-v, --invert-match 显示不匹配的行
-V, --version 显示版本号
--help 显示帮助信息
--mmap use memory-mapped input if possible
输入控制:
-m, --max-count=NUM 匹配的最大数
-b, --byte-offset 打印匹配行前面打印该行所在的块号码。
-n, --line-number 显示的加上匹配所在的行号
--line-buffered 刷新输出每一行
-H, --with-filename 当搜索多个文件时,显示匹配文件名前缀
-h, --no-filename 当搜索多个文件时,不显示匹配文件名前缀
--label=LABEL print LABEL as filename for standard input
-o, --only-matching 只显示一行中匹配PATTERN 的部分
-q, --quiet, --silent 不显示任何东西
--binary-files=TYPE 假定二进制文件的TYPE 类型;
TYPE 可以是`binary', `text', 或`without-match'
-a, --text 匹配二进制的东西
-I 不匹配二进制的东西
-d, --directories=ACTION 目录操作,读取,未激活溯源码递归,跳过
-D, --devices=ACTION 设置对设备,FIFO,管道的操作,读取,跳过
-R, -r, --recursive 递归调用
--include=PATTERN 只查找匹配FILE_PATTERN 的文件
--exclude=PATTERN 跳过匹配FILE_PATTERN 的文件和目录
--exclude-from=FILE 跳过所有除FILE 以外的文件
-L, --files-without-match 匹配多个文件时,显示不匹配的文件名
-l, --files-with-matches 匹配多个文件时,显示匹配的文件名
-c, --count 显示匹配了多少次
-Z, --null 在FILE 文件最后打印空字符
文件控制:
-B, --before-context=NUM 打印匹配本身以及前面的几个行由NUM控制
-A, --after-context=NUM 打印匹配本身以及随后的几个行由NUM控制
-C, --context=NUM 打印匹配本身以及随后,前面的几个行由NUM控制
-NUM 根-C的用法一样的
--color[=WHEN],
--colour[=WHEN] 使用标志高亮匹配字串;
-U, --binary 使用标志高亮匹配字串;
-u, --unix-byte-offsets 当CR 字符不存在,报告字节偏移(MSDOS 模式)
例:
测试文件
复制代码
代码如下:
root:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/bin/false,aaa,bbbb,cccc,aaaaaa
DADddd:x:2:2:daemon:/sbin:/bin/false
mail:x:8::mail:/var/spool/mail:/bin/false
ftp:x:::ftp:/home/ftp:/bin/false
nobody:$:::nobody:/:/bin/false
zhangy:x:::,,,:/home/zhangy:/bin/bash
http:x::::/srv/http:/bin/false
dbus:x:::System message bus:/:/bin/false
hal:x:::HAL daemon:/:/bin/false
mysql:x::::/var/lib/mysql:/bin/false
aaa:x::::/home/aaa:/bin/bash
ba:x::::/home/zhangy:/bin/bash
test:x::::/home/test:/bin/bash
@zhangying:*::::/home/test:/bin/bash
policykit:x:::Po
a,匹配含有root的行
复制代码
代码如下:
[root@krlcgcms test]# grep root testroot:x:0:0:root:/root:/bin/bash
b,匹配以root开头或者以zhang开头的行,注意反斜杠
复制代码
代码如下:
[root@krlcgcms test]# cat test |grep '^\(root\|zhang\)'root:x:0:0:root:/root:/bin/bash
zhangy:x:::,存储策略源码程序,,:/home/zhangy:/bin/bash
c,匹配以root开头或者以zhang开头的行,注意反斜杠,根上面一个例子一样,-e默认是省去的
[root@krlcgcms test]# cat test |grep -e '^\(root\|zhang\)'
root:x:0:0:root:/root:/bin/bash
zhangy:x:::,,,:/home/zhangy:/bin/bash
d,匹配以zhang开头,只含有字母
复制代码
代码如下:
[root@krlcgcms test]# echo 'zhangying' |grep '^zhang[a-z]*$'zhangying
e,匹配以bin开头的行,用的egrep,在这里可以换成-F,-G
复制代码
代码如下:
[root@krlcgcms test]# cat test |grep -E '^bin'bin:x:1:1:bin:/bin:/bin/false,aaa,bbbb,cccc,aaaaaa
f,在匹配的行前面加上该行在文件中,或者输出中所在的行号
复制代码
代码如下:
[root@krlcgcms test]# cat test|grep -n zhangy7:zhangy:x:::,,,:/home/zhangy:/bin/bash
:ba:x::::/home/zhangy:/bin/bash
:@zhangying:*::::/home/test:/bin/bash
g,不匹配以bin开头的行,并显示行号
复制代码
代码如下:
[root@krlcgcms test]# cat test|grep -nv '^bin'root:x:0:0:root:/root:/bin/bash
DADddd:x:2:2:daemon:/sbin:/bin/false
mail:x:8::mail:/var/spool/mail:/bin/false
ftp:x:::ftp:/home/ftp:/bin/false
nobody:$:::nobody:/:/bin/false
zhangy:x:::,,,:/home/zhangy:/bin/bash
http:x::::/srv/http:/bin/false
dbus:x:::System message bus:/:/bin/false
hal:x:::HAL daemon:/:/bin/false
mysql:x::::/var/lib/mysql:/bin/false
aaa:x::::/home/aaa:/bin/bash
ba:x::::/home/zhangy:/bin/bash
test:x::::/home/test:/bin/bash
@zhangying:*::::/home/test:/bin/bash
policykit:x:::Po
h,显示匹配的个数,不显示内容
复制代码
代码如下:
[root@krlcgcms test]# cat test|grep -c zhang3
i,匹配system,没有加-i没有匹配到东西。
复制代码
代码如下:
[root@krlcgcms test]# grep system test[root@krlcgcms test]# grep -ni system test
9:dbus:x:::System message bus:/:/bin/false
j,匹配zhan没有匹配到东西,匹配zhangy能匹配到,因为在test文件中,有zhangy这个单词
复制代码
代码如下:
[root@krlcgcms test]# cat test|grep -w zhan[root@krlcgcms test]# cat test|grep -w zhangy
zhangy:x:::,,,:/home/zhangy:/bin/bash
ba:x::::/home/zhangy:/bin/bash
k,在这里-x后面东西,和输出中的整行相同时,才会输出
[root@krlcgcms test]# echo aaaaaa |grep -x aaa
[root@krlcgcms test]# echo aaaa |grep -x aaaa
aaaa
l,最多只匹配一次,如果把-m 1去掉的话,会有三个
复制代码
代码如下:
[root@krlcgcms test]# cat test |grep -m 1 zhangzhangy:x:::,,,:/home/zhangy:/bin/bash
m,匹配行的前面显示块号,这个块号是干什么的,不知道,有谁知道可否告诉我一下
复制代码
代码如下:
[apacheuser@krlcgcms test]$ cat test |grep -b zha:zhangy:x:::,,,:/home/zhangy:/bin/bash
:ba:x::::/home/zhangy:/bin/bash
:@zhangying:*::::/home/test:/bin/bash
n,多文件匹配时,在匹配的行前面加上文件名
复制代码
代码如下:
[apacheuser@krlcgcms test]$ grep -H 'root' test test2 testbaktest:root:x:0:0:root:/root:/bin/bash
test2:root
testbak:root:x:0:0:root:/root:/bin/bash
o,多文件匹配时,在匹配的行前面不加上文件名
复制代码
代码如下:
[apacheuser@krlcgcms test]$ grep -h 'root' test test2 testbakroot:x:0:0:root:/root:/bin/bash
root
root:x:0:0:root:/root:/bin/bash
p,多文件匹配时,显示匹配文件的文件名
复制代码
代码如下:
[apacheuser@krlcgcms test]$ grep -l 'root' test test2 testbak DAtatest
test2
testbak
q,没有-o时,有一行匹配,这一行里面有3个root,加上-o后,这个3个root就出来了
复制代码
代码如下:
[apacheuser@krlcgcms test]$ grep 'root' testroot:x:0:0:root:/root:/bin/bash
[apacheuser@krlcgcms test]$ grep -o 'root' test
root
root
root
r,递归显示匹配的内容,在test目录下面建个mytest目录,copy test目录下面的test文件到mytest下面,能看到上面的结果
复制代码
代码如下:
[root@krlcgcms test]# grep test -R /tmp/test/mytest/tmp/test/mytest/test:test:x::::/home/test:/bin/bash
/tmp/test/mytest/test:@zhangying:*::::/home/test:/bin/bash
s,显示匹配root后面的3行
复制代码
代码如下:
[root@krlcgcms test]# cat test |grep -A 3 rootroot:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/bin/false,aaa,bbbb,cccc,aaaaaa
daemon:x:2:2:daemon:/sbin:/bin/false
mail:x:8::mail:/var/spool/mail:/bin/false
fgrep
用法: fgrep [选项]... PATTERN [FILE]...
在每个 FILE 或是标准输入中查找 PATTERN。
PATTERN 是一组由断行符分隔的定长字符串。
例如: fgrep -i 'hello world' menu.h main.c
正则表达式选择与解释:
-e, --regexp=PATTERN 用 PATTERN 来进行匹配操作
-f, --file=FILE 从 FILE 中取得 PATTERN
-i, --ignore-case 忽略大小写
-w, --word-regexp 强制 PATTERN 仅完全匹配字词
-x, --line-regexp 强制 PATTERN 仅完全匹配一行
-z, --null-data 一个 0 字节的数据行,但不是空行
杂项:
-s, --no-messages 不显示错误信息
-v, --invert-match 选中不匹配的行
-V, --version 显示版本信息并退出
--help 显示此帮助并退出
--mmap 忽略向后兼容性
Output control:
-m, --max-count=NUM 匹配的最大数
-b, --byte-offset 打印匹配行前面打印该行所在的块号码
-n, --line-number 显示的加上匹配所在的行号
--line-buffered 刷新输出每一行
-H, --with-filename 当搜索多个文件时,显示匹配文件名前缀
-h, --no-filename 当搜索多个文件时,不显示匹配文件名前缀
--label=LABEL use LABEL as the standard input file name prefix
-o, --only-matching 只显示一行中匹配PATTERN 的部分
-q, --quiet, --silent 不显示所有输出
--binary-files=TYPE 假定二进制文件的TYPE 类型;
TYPE 可以是`binary', `text', 或`without-match'
-a, --text 等同于 --binary-files=text
-I 等同于 --binary-files=without-match
-d, --directories=ACTION 操作目录的方式;
ACTION 可以是`read', `recurse',或`skip'
-D, --devices=ACTION 操作设备、先入先出队列、套接字的方式;
ACTION 可以是`read'或`skip'
-R, -r, --recursive 等同于 --directories=recurse
--include=FILE_PATTERN 只查找匹配FILE_PATTERN 的文件
--exclude=FILE_PATTERN 跳过匹配FILE_PATTERN 的文件和目录
--exclude-from=FILE 跳过所有除FILE 以外的文件
--exclude-dir=PATTERN 跳过所有匹配PATTERN 的目录。
-L, --files-without-match 只打印不匹配FILEs 的文件名
-l, --files-with-matches 只打印匹配FILES 的文件名
-c, --count 只打印每个FILE 中的匹配行数目
-T, --initial-tab 行首tabs 分隔(如有必要)
-Z, --null 在FILE 文件最后打印空字符
文件控制:
-B, --before-context=NUM 打印以文本起始的NUM 行
-A, --after-context=NUM 打印以文本结尾的NUM 行
-C, --context=NUM 打印输出文本NUM 行
-NUM 等同于 --context=NUM
--color[=WHEN],
--colour[=WHEN] 使用标志高亮匹配字串;
WHEN 可以是`always', `never'或`auto'
-U, --binary 不要清除行尾的CR 字符(MSDOS 模式)
-u, --unix-byte-offsets 当CR 字符不存在,报告字节偏移(MSDOS 模式)
fgrep已不再使用了;请用 grep -F代替。
不带 FILE 参数,或是 FILE 为 -,将读取标准输入。如果少于两个 FILE 参数
就要默认使用 -h 参数。如果选中任意一行,那退出状态为 0,否则为 1;
如果有错误产生,且未指定 -q 参数,那退出状态为 2。
例:
复制代码
代码如下:
[root@linux test]# cat abc.sh |fgrep a #匹配含有a的行