用于数组数字顺序的正则表达式



我想改变许多仿真输入文件的参数文件顺序。由于材料数据文件很多,(>100个材料@>200行)所以我需要自动化。

例如,

....
mobility = [1470.0 530.0],
eps0     = [3.0     -1.0],
....

....
mobility = [530.0 1470.0],
eps0     = [-1.0     3.0],
....

在这种情况下,最好使用简单的脚本形式。

也许这就是你要找的:

cat tst.awk 
match($0, /[[^]]+]/) {
str = substr($0, RSTART+1, RLENGTH-2)
split(str, a)
$0 = ( a[1] <= a[2] ? $1 OFS $2 " ["str"]," : $1 OFS $2 " ["a[2] OFS a[1]"]," )
printf("%-8s %-1s %-6s %8sn", $1, $2, $3, $4)
}
$ awk -f tst.awk input 
mobility = [530.0 1470.0],
eps0     = [-1.0     3.0],

要进一步阅读,请查看GNU Awk用户指南。