当前位置: 技术问答>linux和unix
用perl匹配并替换文本中的字串问题
来源: 互联网 发布时间:2016-06-23
本文导语: 想解决这样一个问题: 1、有文本文件a.txt 内容大致包含如下字串: hello everyone path:filename_1 filepath_1 hello u path:filename_2 filepath_2 ... path:filename_3 filepath_3 ... 想把以[path:]开头的行替换成 [path:filepath_nfilename_n]的形式。...
想解决这样一个问题:
1、有文本文件a.txt
内容大致包含如下字串:
hello everyone
path:filename_1 filepath_1
hello u
path:filename_2 filepath_2
...
path:filename_3 filepath_3
...
想把以[path:]开头的行替换成 [path:filepath_nfilename_n]的形式。
即想把特定行做一个正规替换。
2、是否可以不要重新生成一个格式正确的文本文件a_modified.txt文件?而是在a.txt中读取一行的同时修改并写入原文件?
多谢!
1、有文本文件a.txt
内容大致包含如下字串:
hello everyone
path:filename_1 filepath_1
hello u
path:filename_2 filepath_2
...
path:filename_3 filepath_3
...
想把以[path:]开头的行替换成 [path:filepath_nfilename_n]的形式。
即想把特定行做一个正规替换。
2、是否可以不要重新生成一个格式正确的文本文件a_modified.txt文件?而是在a.txt中读取一行的同时修改并写入原文件?
多谢!
|
不知这样是否符合楼主的要求:
$ cat a.txt
hello everyone
path:filename_1 filepath_1
hello u
path:filename_2 filepath_2
...
path:filename_3 filepath_3
...
$ awk -F "[: ]+" '{ if (NF == 3) { printf("%s:\%s\%sn", $1, $3, $2)} else {print}}' a.txt
hello everyone
path:filepath_1filename_1
hello u
path:filepath_2filename_2
...
path:filepath_3filename_3
...
$