gpt4 book ai didi

linux - 将与模式匹配的行从一个文件移动到另一个文件

转载 作者:IT王子 更新时间:2023-10-29 00:22:43 24 4
gpt4 key购买 nike

我想将匹配特定模式的行从 file1 移动到 file2。类似于 Windows 中从一个文件剪切和粘贴到另一个的操作

示例

假设我想从 file1 中剪切所有包含 bar 的行并将其粘贴到新创建的 file2

输入:

文件1

bla foo bla
bla bar bla
bla aaa bla
bla bar bla
bla foo bla

处理后的期望输出:

文件1

bla foo bla
bla aaa bla
bla foo bla

文件2

bla bar bla
bla bar bla

我尝试过的

grep 创建所需的 file2 但不修改 file1

grep 'bar' file1 > file2

sed -i 修改所需的 file1 但不创建 file2

sed -i '/bar/d' file1

如果我一个接一个地执行这两个命令,我会得到想要的结果。但出于好奇,我正在寻找一个单行命令并使脚本更简洁。

我们将不胜感激。

最佳答案

这可能对你有用(GNU sed):

sed -i -e '/bar/{w file2' -e 'd}' file1

替代方案:

sed -i -e '/bar/w file2' -e '//d' file1

要追加到 file2,写入临时文件并使用 cat 在 bash 脚本中追加到文件末尾,或使用:

sed -i -e '/bar/w tmpfile' -e '$e cat tmpfile >> file2 && rm tmpfile' -e '//d' file1

注意对于最后一种解决方案,一次只能修改一个输入文件。

关于linux - 将与模式匹配的行从一个文件移动到另一个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19465127/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com