考慮我有一個文件abcde.txt,它可能包含一行或多行文本。我想要一個腳本,它將刪除文件,如果它包含單行。Unix腳本刪除文件,如果它包含單行
喜歡的東西,if 'wc -l abscde.txt' = 1 then rm abscde.txt
我的系統:的Solaris
考慮我有一個文件abcde.txt,它可能包含一行或多行文本。我想要一個腳本,它將刪除文件,如果它包含單行。Unix腳本刪除文件,如果它包含單行
喜歡的東西,if 'wc -l abscde.txt' = 1 then rm abscde.txt
我的系統:的Solaris
這裏有一個簡單的bash腳本:
#!/bin/bash
LINECOUNT=`wc -l abscde.txt | cut -f1 -d' '`
if [[ $LINECOUNT == 1 ]]; then
rm -f abscde.txt
fi
這個解決方案對我來說不適用於solaris。 cut命令不處理wc輸出前面的多餘空格。我用下面的代替'wc -l abscde.txt | awk'{print $ 1}'' – 2014-05-23 15:21:06
delifsingleline() {
if [ $(cat $1 | wc -l) = "1" ]
then
echo "Deleting $1"
echo "rm $1"
fi
}
上zsh
輕輕測試。還應該在bash
上工作。
這是(大部分)只是一個Ben的答案重新格式化:
wc -l $PATH | grep '^1 ' > /dev/null && rm -f $PATH
您運行的是什麼殼呢? – heldt 2011-03-16 15:58:48
即使只有空行,您是否要刪除該文件? – anubhava 2011-03-16 16:09:42
1.它是BASH shesll 2.是的,如果文件是空白的,那麼也刪除。但在我的情況下,它總是至少有一條線。 – 2011-03-24 17:44:32