私のCSVファイルは次のとおりです(パイプ区切り)。
apple|banana|pear||grapefruit
lemon|lime|damson|jackfruit
|tangerine|nectarine|plum
apricot|orange|pineapple|coconut|
(さまざまなフィールドに存在できるすべての種類のスペースまたは特殊文字を想定します。)
最初の列と最後の列を含むすべての列の値が空であることを確認する必要があります。
予想出力:
apple|banana|pear||grapefruit
|tangerine|nectarine|plum
apricot|orange|pineapple|coconut|
どうすればいいですか?
ベストアンサー1
〜のようにコメントに記載されている、単純で明確な答えはですが、grep '||'
最初または最後の列が空の場合はキャッチできません。
したがって、正解(まだ使用されているgrep
)は次のようになります。
grep '^|\|||\||$' file.txt
この文字は、バックスラッシュでエスケープしたり、このオプションを指定しない|
限り、Grepには特別な文字ではありません。-E
それでもこれは少し不明なので、ファイル内の区切り文字斑点:
grep '^,\|,,\|,$' file.txt
省略したい場合はそのまま含めてください最後フィールドは空ですが、他のフィールドは空の行を印刷します。最後の場合は省略してください。
grep '^|\|||' file.txt
実際、次のように各ケースを別々のパラメータに入れると、何が起こっているのかを簡単に確認できます。
grep -e '^|' -e '||' -e '|$' file.txt