ファイルから行を削除

ファイルから行を削除

1つのフォルダに8つのファイルがあります。これらのファイルのいずれかに2行がある場合は、そのファイルから2行目を削除する必要があります。ファイルが2行より長い場合は、何もする必要はありません。

答え1

このスクリプトを試してください。うまくいきます。

for file in $(ls *.txt)
do
    LINENUMB=`wc -l $file | cut -f1 -d' '`
    if [[ $LINENUMB == 2 ]]; then
    sed -i '$d' $file
    fi
done

答え2

そして:findsed

find -type f -exec sh -c '[[ $(sed -n $= $0) -eq 2 ]]' {} \; -exec sed -i '1!d' {} +

注:これはfindディレクトリ構造に従ってPATH調整する必要があります-maxdepth

関連情報