shell去掉⽂件中空⾏(空⽩⾏)的⽅法详解
本⽂详细介绍了使⽤shell去除⽂件中的空⾏的⽅法,学习下sed、awk、shell⽂件检测的⽅法,有需要的朋友可以作个参考。本节内容:
shell去掉⽂件中空⾏
1,shell 去掉⽂件中的空⾏
复制代码代码如下:
cat filename | sed -e '/^$/d' > filename
2,保留最新的9个⽂件,其它的⽂件删除的命令语句
复制代码代码如下:
ls -t | awk '{if(NR>9){print $0}}' |xargs rm -f
附,shell中的特殊变量
$$
Shell本⾝的PID(ProcessID)
$!
Shell最后运⾏的后台Process的PID
$?
最后运⾏的命令的结束代码(返回值)
$-
使⽤Set命令设定的Flag⼀览
$*
所有参数列表。如"$*"⽤「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。
$@
所有参数列表。如"$@"⽤「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。
$#
添加到Shell的参数个数
$0
Shell本⾝的⽂件名
$1~$n
添加到Shell的各参数值。$1是第1参数、$2是第2参数…
判断 test
test -f 是否参在并是⽂件
-d 是否参在并是⽬录
-e ⽂件是否存在
man test
判断7种⽂件类型
test -f  $1 && cat $1普通⽂件
test -d  $1 && ls -ld $1⽬录
test -L  $1 && ls -ld $1连接⽂件
test -p  $1 && ls -ld $1管道⽂件
test -S  $1 && ls -ld $1套接字
test -b  $1 && ls -ld $1块设备
test -c  $1 && ls -ld $1字符设备
下⾯举⼏个例⼦吧,供⼤家学习参考。
1,⽐较数字⼤⼩
复制代码代码如下:
#!/bin/bash
test $1 -gt  $2 && echo $1
test $1 -lt  $2 && echo $2
test $1 -eq  $2  && echo $1=$2
2,判断字符串
复制代码代码如下:
#!/bin/bash
test $1 !=  $2 && echo 不相等
test $1 =  $2  && echo $1=$2
3,组合判断
1)、
复制代码代码如下:
#!/bin/bash
test $1 -gt 5 -a  $1 -lt 10 && echo  $1
if
#!/bin/bash
if test $1 -gt 5(或if [ $1 -gt 5 ]注意空格)
then
echo  $1
fi
2)、
复制代码代码如下:
#!/bin/bash
ping -c 1 -W 1 192.168.0.$1 &>/dev/null (-c 1表⽰ping⼀次,-W⽬标主机不可达超时为1秒)
if [ $? -eq 0 ]
then
echo  link OK
esle
echo link no
fi
今天发现有个⽂件中空⾏太多了,打算删除其中的空⾏。
于是使⽤sed, 查了下命令,这么写:shell代码
sed '/^$/d' file1
发现仍然输出内容仍然有⼀⼤堆空⾏,真是莫名其妙。
于是:sed '/^$/p' file1 发现输出的空⾏很少,⽽实际上是很多空⾏的呀。
于是使⽤ cat -A file1
才发现,原来很多⾏⾥出现空格字符,导致正则并不识别它是空⾏
于是修改为: sed '/^ *$/d' file1 这下就OK啦
另外要注意在windows 下换⾏符是^M$
⽽在 LINUX下是 $,如果是WINDOWS下的⽂件的话需要转换⼀下,使⽤doc2unix好像是这个⼯具吧。
最近要查看的⽇志⽂件提取后有很多空⾏,不利于以前的⽂件可以进⾏⽐较了,为了向下兼容,只能取得时候把空⾏删除掉。⾃⼰google了⼀下,⽤了grep⽅法,效率还是挺快的,25000+⾏中73⾏空⾏,瞬间搞定,应该可以接⼿。
⽅法⼀:(我就是⽤的这个)
grep -v "^$" file 去除匹配的空⾏
另外在排查错的时候也利⽤grep 查看那⼏⾏是空⾏,从⽽从原来的⽇志⽂件查看那⼏⾏为什么没有该信息,
加参数 -n grep -n "^$" file 即可到空⾏再去原⽇志⽂件查看信息。⽅法⼆:⽤tr命令
cat ⽂件名 |tr -s ‘\n'
⽅法三:⽤sed命令
cat ⽂件名 |sed ‘/^$/d'
⽅法四:⽤awk命令
cat ⽂件名 |awk ‘{if($0!=”")print}'
cat ⽂件名 |awk ‘{if(length !=0) print $0}'

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。