shell 怎么批量删除文本文件的前几行

当前目录下有大量的.dat后缀的文件,"001_U.dat", “002_U.dat”。。。
现在想把所有这些文件里的前19行内容,末尾5行内容,都统一删除(但是中间文本不一样长,所以都得从末尾行开始数5行),然后还有文本里所有的圆括号,"(", ")"都删除,
请问怎么实现?

我知道可以使用
sed 's/[()]//g'
sed '1,19d'
来删除括号和前19行。
但是删除末尾5行,和批量处理目录下的所有文件,不知道怎么操作,先谢谢各位了

for file in `ls *.dat`
do
awk '{++lines;gsub(/[()]/,"");text[lines]=$0}
END {for(i=19;i<=lines-5;i++) 
print text[i];
}
' "$file" >tmp$$
mv tmp$$ "$file"
done

温馨提示:答案为网友推荐,仅供参考
相似回答