请教一个批量删除文本文件中多余回车或提取文本中前两行数据的shell脚本,请高手指点,万分感谢

来源:百度知道 编辑:UC知道 时间:2024/06/02 07:21:44
我有许多类似以下内容的txt文件,其中有用的主要是两行有数值的部分,其余多余的回车行(文件中回车行数量不一定)必须删除,否则存在问题,如何能批量的修改一下这些txt文件呢,或者是如何能提取出来前两行文件也行,存成同样的文件名文件就可以。不知道我表述清楚没有,请熟悉这方面的指点一下:谢谢!
文件示例:
8.1593 8.1601 8.1601 8.1590 8.1594 8.1601 8.1598 8.1589 8.1594 8.1595 8.1588 8.1599
8.1582 8.1597 8.1586 8.1594 8.1588 8.1594 8.1584 8.1588 8.1597 8.1593 8.1592 8.1597
<-注意此处是多余的空格
<-注意此处是多余的空格
<-注意此处是多余的空格
... ...

这样删除空行,

grep -E -v '^[\t\n ]*$' file > outfile

用脚本批量改,在该目录下放入这脚本

#! /bin/bash

for i in *.txt # 假设副档为 .txt
do
grep -E -v '^[\t\n ]*$' "$i" > "$i".bak
ret=$?
if [ $ret -eq 0 ]
then
mv -f "$i" "$i".temp
mv -f "$i.bak" "$i"
mv -f "$i.temp" "$i.$(date +%Y%m%d).bak
else
echo "$i: fail to delete blank line"
fi
done

没测试

最简单的方法: head -n 2 .txt > temp.txt
head 命令的意思是取前两行输出到temp.txt

用sed似乎要简单得多:

sed '2q' *.txt