2011-03-16 89 views
1

考虑我有一个文件abcde.txt,它可能包含一行或多行文本。我想要一个脚本,它将删除文件,如果它包含单行。Unix脚本删除文件,如果它包含单行

喜欢的东西,if 'wc -l abscde.txt' = 1 then rm abscde.txt

我的系统:的Solaris

+1

您运行的是什么壳呢? – heldt 2011-03-16 15:58:48

+0

即使只有空行,您是否要删除该文件? – anubhava 2011-03-16 16:09:42

+0

1.它是BASH shesll 2.是的,如果文件是空白的,那么也删除。但在我的情况下,它总是至少有一条线。 – 2011-03-24 17:44:32

回答

3

这里有一个简单的bash脚本:

#!/bin/bash 

LINECOUNT=`wc -l abscde.txt | cut -f1 -d' '` 

if [[ $LINECOUNT == 1 ]]; then 
    rm -f abscde.txt 
fi 
+0

这个解决方案对我来说不适用于solaris。 cut命令不处理wc输出前面的多余空格。我用下面的代替'wc -l abscde.txt | awk'{print $ 1}'' – 2014-05-23 15:21:06

0
delifsingleline() { 
    if [ $(cat $1 | wc -l) = "1" ] 
    then 
     echo "Deleting $1" 
     echo "rm $1" 
    fi 
} 

zsh轻轻测试。还应该在bash上工作。

0

这是(大部分)只是一个Ben的答案重新格式化:

 
wc -l $PATH | grep '^1 ' > /dev/null && rm -f $PATH