特定のパターン/文字列のファイルを確認し、すべての列に存在する場合はその行を削除したいと思います。
例:
name1 name2 name3 name1 name1 name2 name3
name1 name2 name3 name1 name2 name1
name2 name1 name1 name2 name3 name1
name2 name2 name2 name2 name2
このファイルでは、行4のすべての列に同じ名前が含まれているので、行4を削除したいと思います。
大容量ファイルがあり、awkまたはgrepで列数を手動で定義することはできません。
ベストアンサー1
そしてawk
:
awk 'NF>1 { for(i=2; i<=NF; i++) if($i != $1) { print; next } } NF<=1' file
sed
GNUまたは最近BSDを使用するsed
:
sed -E '/^[ \t]*([^ \t]+)([ \t]+\1)+[ \t]*$/d' file