在Shell中的特定行之后删除行

时间:2018-04-06 09:30:18

标签: shell design-patterns lines

我正在尝试删除文件中特定模式之后的所有行。

我有很多文件,它们都具有相同的结构:

示例:

文件1

第1行 ... 第x行“这里有一个特定的模式” ... EOF

... ...

file n

第1行 ... 第x行“这里有一个特定的模式” ... EOF

我试图找到一个简单的解决方案,但由于我有很多文件,所以我还有很长的路要走:p

模式在每个文件中出现一次。

所以,我得到了包含这个模式的所有行号,并保存在一个文件中。

这是我的代码:

layout(binding = 0) buffer matrixBuffer {
    vec4 matrixABC[];
};

PATTERN_line.txt中的每一行都包含每个文件中存在模式的行号。

现在,我正在尝试使用这些数字删除Pattern之后的所有行到文件结尾。 这意味着,我需要保留文件,从头部到包含的图案线。

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

你可以使用下面的sed命令,也可以在脚本中阅读我的评论,了解它是如何工作的: -

#list all the files in a temporary file
cd /path_to_folder/
ls -1 *.txt > list_of_files.txt

#now read each file from the temp file
while read file
do
    #redirect the output to a temporary file
    sed -n '/here there is a specific pattern/q;p' "$file" > temp.txt
    #sed -n '/here there is a specific pattern/p' "$file" >> temp.txt
    #uncomment the above line if your want to including the line match as well
    mv temp.txt "$file"
    #change the file name
done < list_of_files.txt
rm -rf list_of_files.txt