MS EXCEL CSV ファイルの末尾の空白行を削除します。

MS EXCEL CSV ファイルの末尾の空白行を削除します。

1つのパスに約300個のCSVファイルがあります。これらのファイル名には*_PROD.csv*_DEV.csv3つのカテゴリがあります*_UAT.csv

これらのファイルには多くの空行(約1000行)があり、プロセスがファイルをパスにコピーするとレコードの末尾に挿入されます。

これらすべてのファイルから空白行を削除したいと思います。スペースを削除した後、このファイルをマージする必要があります。

私はこれを試しました:

sed -i '/^$/d' ${File_Path}*_PROD.csv
sed -i '/^$/d' ${File_Path}*_DEV.csv
sed -i '/^$/d' ${File_Path}*_UAT.csv

しかし、これは期待どおりに機能しませんでした。

最後に空白行を削除した後は、他の操作を実行する必要があるため、ファイルを変更せずに維持したいと思います。

提案してください。

参考のための私のスクリプト:

File_Path=/File_Path

dos2unix ${File_Path}*_PROD.csv
dos2unix ${File_Path}*_DEV.csv
dos2unix ${File_Path}*_UAT.csv



sed -i '/^\s*$/d' ${File_Path}*_PROD.csv
sed -i '/^\s*$/d' ${File_Path}*_DEV.csv
sed -i '/^\s*$/d' ${File_Path}*_UAT.csv

awk '(NR == 1) || (FNR > 1)' ${File_Path}*PROD.csv > Merged_PROD.csv
awk '(NR == 1) || (FNR > 1)' ${File_Path}*_DEV.csv > Merged_DEV.csv
awk '(NR == 1) || (FNR > 1)'  ${File_Path}*_UAT.csv > Merged_UAT.csv

ベストアンサー1

CSVファイルにはWindows行末があります。したがって、まずLinux形式に変換する必要があります。

dos2unix yourfileあなたのためにそれを行います。

ボックスにない場合は、次dos2unixのように同じ結果が得られます。

sed "s/\r//" infile >outfile         # UnxUtils sed v4.0.7 or higher
tr -d \r <infile >outfile            # GNU tr version 1.22 or higher

~によるとsed1line.txt

ファイルがUnix形式に変換されると、通常のsedコマンドは期待どおりに機能します。

空白行のスペースを確認してください。sed '/^\s*$/d' yourfile

1つのsedコマンドですべて:

sed -e 's/\r// -e /^\s*$/d' yourfile > outputfile

おすすめ記事