免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 2458 | 回复: 17
打印 上一主题 下一主题

向大家请教,有关awk。 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-07-28 21:30 |只看该作者 |倒序浏览
bibitem{Apkarian2000b}  Apkarian, P., Pellanda, P.,

and Tuan, H. (2000). newblock Mixed ${H}_{2}$/${H}_{infty }$

multi-channel linear parameter-varying control in discrete time.

newblock emph{Systems Control Lett.}, 41(5): 333--346.


bibitem{Apkarian1995}  Apkarian, P. and~Gahinet, P. (1995). %

newblock A convex characterization of gain-scheduled ${H}_{infty }$

controllers. newblock emph{IEEE Trans. Automat. Control}, 40(5):

853--864.



bibitem{Basin2008}  Basin, M., Perez, J. and Calderon-Alvarez, D.

(200. newblock Optimal filtering for linear systems over

polynomial observations. newblock emph{Int. J. Innovative

Computing, Information and Control}, 4(2): 313--320.


bibitem{Apkarian2000}  Apkarian, P. and Tuan, H.

(2000). newblock Parameterized {LMI}s in control theory. newblock emph{%

SIAM J. Control Optim.}, 38(4): 1241--1264.



如上,这是用Latex写的两个Reference,老师让我修改它,即:

1.名字将姓放在后面,举例来说就是将Apkarian, P.,变成P.Apkarian。并且多个名字的话用逗号隔开。
2.将年代放在每个引用的最后面,并将括号去掉。

由于参考文献太多了,所以我想用awk处理。

我的初步想法是将以/[A-Z][a-z]+,/和/[A-Z]./交换,但我想不出应该如何用awk实现,
还有年代如何放在每个记录的最后,也一并请各路神仙请教。

谢谢!

论坛徽章:
0
2 [报告]
发表于 2009-07-28 21:45 |只看该作者

回复 #1 poke006 的帖子

等着看高手的解答!

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
3 [报告]
发表于 2009-07-28 22:09 |只看该作者
要这样?
  1. sed ':a;$bn;N;/\n\n\n/!ba;:n;s/\<\([A-Z][A-Za-z_-]\+\), *\([A-Z]\.\)/\2\1/g;s/(\([0-9]\{4\}\))\(.*\)\(\n\n\n\)/\2 \1\3/;h;s/.*\n\n\n//;x;s/\(\n\n\n\).*/\n\n/p;x;$!ba;s/(\([0-9]\{4\}\))\(.*\)/\2\1/' urfile
复制代码

  1. sed -r ':a;$bn;N;/\n{3}/!ba;:n;s/\<([A-Z][A-Za-z_-]+), *([A-Z]\.)/\2\1/g;s/\(([0-9]{4})\)(.*)(\n{3})/\2 \1\3/;h;s/.*\n{3}//;x;s/(\n{3}).*/\n\n/p;x;$!ba;s/\(([0-9]{4})\)(.*)/\2\1/' urfile
复制代码

[ 本帖最后由 blackold 于 2009-7-28 23:25 编辑 ]

论坛徽章:
0
4 [报告]
发表于 2009-07-28 22:18 |只看该作者

回复 #3 blackold 的帖子

谢谢黑哥!

我今天看不了了,明天实验一下。

论坛徽章:
0
5 [报告]
发表于 2009-07-28 22:19 |只看该作者

回复 #1 poke006 的帖子

我也是个菜鸟,我想了半天先可以把名字调换了,另外一个功能我在想想!!!
sed -r 's/([A-Z][a-z]+,) ([A-Z].),*/\2\1/g' file
bibitem{Apkarian2000b}  P.Apkarian, P.Pellanda,

and H.Tuan, (2000). newblock Mixed ${H}_{2}$/${H}_{infty }$

multi-channel linear parameter-varying control in discrete time.

newblock emph{Systems Control Lett.}, 41(5): 333--346.


bibitem{Apkarian1995}  P.Apkarian, and~P.Gahinet, (1995). %

newblock A convex characterization of gain-scheduled ${H}_{infty }$

controllers. newblock emph{IEEE Trans. Automat. Control}, 40(5):

853--864.



bibitem{Basin2008}  M.Basin, J.Perez, and Calderon-D.Alvarez,

(200. newblock Optimal filtering for linear systems over

polynomial observations. newblock emph{Int. J. Innovative

InComputing,formation and Control}, 4(2): 313--320.


bibitem{Apkarian2000}  P.Apkarian, and H.Tuan,

(2000). newblock Parameterized {LMI}s in control theory. newblock emph{%

SIAM J. Control Optim.}, 38(4): 1241--1264.

论坛徽章:
0
6 [报告]
发表于 2009-07-28 22:21 |只看该作者

回复 #3 blackold 的帖子

黑哥你的答案好恐怖啊,完全看不懂!

论坛徽章:
0
7 [报告]
发表于 2009-07-28 22:25 |只看该作者

回复 #1 poke006 的帖子

2.将年代放在每个引用的最后面,并将括号去掉。
  指的是什么意思,就是把年份另外在每段的最后输出,原文里面的年份应该不变吧?

论坛徽章:
0
8 [报告]
发表于 2009-07-28 22:36 |只看该作者
写得不太艺术,不过功能应该实现了:

  1. awk --re-interval -v RS="\n{3,}" '{r=gensub("(.*)\\(([1-2][0-9]{3})\\)\\. (.*[^\n])","\\1\\3 \\2.","1"); printf gensub("([A-Za-z-]+), ([A-Z]\\.)","\\2\\1","g",r)RT}' URFILE
复制代码

[ 本帖最后由 kwokcn 于 2009-7-28 22:47 编辑 ]

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
9 [报告]
发表于 2009-07-29 07:27 |只看该作者
简化:
  1. sed -n ':a;$bn;N;/\n\n\n/!ba;h;s/.*\n\n\n//;x;s/\n\n\n.*/\n\n/;:n;s/\<\([A-Z][A-Za-z_-]\+\), *\([A-Z]\.\)/\2\1/g;s/(\([0-9]\{4\}\))\(.*[^\n]\)/\2 \1/p;x;$!ba'  urfile
复制代码
  1. sed -rn ':a;$bn;N;/\n{3}/!ba;h;s/.*\n{3}//;x;s/\n{3}.*/\n\n/;:n;s/\<([A-Z][A-Za-z_-]+), *([A-Z]\.)/\2\1/g;s/\(([0-9]{4})\)(.*[^\n])/\2 \1/p;x;$!ba'  urfile
复制代码

论坛徽章:
0
10 [报告]
发表于 2009-07-29 08:17 |只看该作者

回复 #7 over12 的帖子

就是将括号里面的年代放在每条记录的最后面。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP