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

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

我知道可以使用
sed 's/[()]//g'
sed '1,19d'
来删除括号和前19行。
但是删除末尾5行,和批量处理目录下的所有文件,不知道怎么操作,先谢谢各位了
展开
 我来答
albumin
2018-04-05 · TA获得超过1.2万个赞
知道大有可为答主
回答量:4889
采纳率:87%
帮助的人:2399万
展开全部
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
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式