本文主要是介绍shell脚本-针对文本文档的操作,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
此题目转自阿铭每日一题。
Q:把一个文本文档的前5行中包含字母的行删除掉,同时把6到10行中的全部字母删除掉。
我的答案:
head 1.txt | sed '6,10s/[a-Z]//g'| grep -v'[a-Z]'
参考答案:
假设文本名字叫做1.txt,并且文本行数大于10,脚本如下
#!/bin/bash
##先获取该文本的行数
nu=`wc -l 1.txt |awk ‘{print $1}’`
##对前5行进程处理
for i in `seq 1 5`
do
##使用sed把每一行的内容赋值给变量
l=`sed -n “$i”p 1.txt`
##用grep 判定是否匹配字母,-v取反,-q不输出内容
if echo $l |grep -vq ‘[a-zA-Z]’
then
echo $l
fi
done
##对6-10行做删除字母处理
for i in `seq 6 10`
do
l=`sed -n “$i”p 1.txt`
echo $l|sed ‘s/[a-zA-Z]//g’
done
##剩余的直接输出
for i in `seq 11 $nu`
do
sed -n “$i”p 1.txt
done
##若想把更改内容写入到1.txt,还需要把以上内容重定向到一个文本中,然后删除1.txt,再把刚刚重定向的文件更名为1.txt
这篇关于shell脚本-针对文本文档的操作的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!