我可以匹配文件中的模式,对其进行更改并将整行插入到文件中的其他位置吗?
我正在尝试使用 sed
来完成手头的重复性任务。我想要做的是在一堆文件中搜索某种模式,对其进行一些更改,然后将整行插入到找到的同一文件中的其他位置。最好在其他模式发现的特定位置。不影响原来的图案。
为了简单起见,我们假设它是一个键值存储,其中一些新键应该与每个文件中的其他键具有相同的值。假设目录中的每个文件看起来像这样:
key10=value10
key20=value20
key30=value30
key40=value40
现在我想找到 key10=value10
模式,将 key10
更改为 key35
并插入它在key30
之后。使用 Linux 终端。最好使用单行代码并同时处理目录中的所有文件。
sed -n 's/key10/key35/p' file1
将打印我想要的内容,即key35=value10
。我现在需要的是保留它以插入到 file1
中找到 key30=value30
之后的行。
我猜想稍后可以使用 for file in 'ls' 来对 dir 中的每个文件执行此操作。首先只需要一句台词,请帮忙。
I'm trying to use sed
for a repetitive task at hand. What I want to do is search a bunch of files for some pattern, make some change to it and then insert that whole line somewhere else in the same file it was found. Preferable at a specific place found by some other pattern. Without affecting the original pattern.
For simplicity's sake let's say it's a key-value store where some new key should have the same value as some other key in each file. Say each file in the directory looks something like this:
key10=value10
key20=value20
key30=value30
key40=value40
Now I want to find the key10=value10
pattern, change key10
to key35
and insert it after key30
. Using a Linux terminal. Preferably using a one-liner and for all the files in the directory at once.
sed -n 's/key10/key35/p' file1
will print what I want, i.e key35=value10
. What I need now is to preserve this for insertion into file1
at the line after where key30=value30
is found.
I guess a for file in 'ls'
could later be used to perform this operation on each file in dir. Just need the one-liner first, please help.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您实际上并不需要使用 sed 来保持文件排序:
You don't really need to use sed to keep the file sorted: