Maison  >  Article  >  développement back-end  >  Explication détaillée de la façon dont le shell supprime les lignes vides (lignes vierges) des fichiers

Explication détaillée de la façon dont le shell supprime les lignes vides (lignes vierges) des fichiers

高洛峰
高洛峰original
2017-01-09 13:40:132105parcourir

本文详细介绍了使用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

SHELL 删除文件中的空行或者空白行二:

今天发现有个文件中空行太多了 ,打算删除其中的空行。

于是使用sed, 查了下命令,这么写:

sed '/^$/d' file1

发现仍然输出内容仍然有一大堆空行,真是莫名其妙。

于是:sed '/^$/p' file1 发现输出的空行很少,而实际上是很多空行的呀。

于是使用 cat -A file1

才发现,原来很多行里出现空格字符,导致正则并不识别它是空行

于是修改为: sed '/^ *$/d' file1 这下就OK啦

另外要注意在windows 下换行符是^M$

而在 LINUX下是 $,如果是WINDOWS下的文件的话需要转换一下,使用doc2unix好像是这个工具吧。

Linux shell 删除文件空行三:

最近要查看的日志文件提取后有很多空行,不利于以前的文件可以进行比较了,为了向下兼容,只能取得时候把空行删除掉。自己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}'


更多shell去掉文件中空行(空白行)的方法详解相关文章请关注PHP中文网!


Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn