私のファイルには、次のスペースを含む出力があります。
daily/A3D05180000052121001 30698
daily/A3D05180000052200001 30698
daily/A3D05180000052203001 30698
空行を削除する必要があります。出力は次のようになります。
daily/A3D05180000052121001 30698
daily/A3D05180000052200001 30698
daily/A3D05180000052203001 30698
使ってみようsed
sed -i -e '/./,$!d' -e :a -e '/^\n*$/{$d;N;ba' -e '}' "$FILESIZE3"
しかし、うまくいきませんでした。誰でもこの問題を解決するのに役立ちますか?
答え1
sed '/^[[:space:]]*$/d' file >file.modified
file
これにより、完全に空白または空白のような文字のみを含む行が削除されます。この場合、スペースに似た文字には、DOSテキストファイル(Unixツールで処理するとき)の各行の末尾にあるキャリッジリターン、タブ、およびスペースが含まれます。結果データが記録されますfile.modified
。
リダイレクトを削除して-i
代わりにオプションを使用すると、新しいファイルを作成する代わりに「内部」変更が行われますが、file
このオプションは移植できず、他のUnixシステムで異なる動作をすることができます(sed -i(所定の位置で編集)を使用して移植性を達成するには?)。
答え2
他の人は何をしているのかわかりませんがsed
、それがあなたが探しているものではありませんか?
host:~ # sed -e '/^$/d' file.txt
daily/A3D05180000052121001 30698
daily/A3D05180000052200001 30698
daily/A3D05180000052203001 30698
それでも問題が解決しない場合は、要件を明確にしてください。
答え3
AWKはこう言いました。
awk '!/^$/{ print }' infile > outfile && mv outfile infile
答え4
vimは空の行を削除するためにグローバルコマンドを使用します。あなたの場合に役立つかどうかはわかりません。
#:[range]g/pattern/cmd
この例は、パターンに一致する各行でcmdコマンドを実行して、指定された範囲(デフォルトはファイル全体)に対して機能します(実行コマンドはコロンで始まります。例:viのdは削除を意味します)。あなたの場合はそうすることができます
:g/^$/d
間にスペースやタブがある場合
:g/^[\s\t]*$/d
お役に立てば幸いです。