2011-03-16 69 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 
相關問題