sedで正規表現を使用して、数値以外の文字を含むすべての行を印刷する必要があります。入力はcsvで、一部の行にはテキストと数字が含まれています。数字がないものだけを印刷したいです。私が試したことは次のとおりです。
sed -E -n '/^\D*$/p' direcciones.csv
なぜ何も見つかりませんか?
答え1
@steeldriverはあなたの試みがうまくいかない理由をすでに説明しています(sed
それでもGNUではうまくいくはずです)。
しかし、簡単に保つとどうですか?数字以外の文字のみを含むすべての行を印刷することは、数字を含むすべての行を削除するのと同じです。
sed '/[0-9]/d' direcciones.csv
書き込みも読みやすくなりますか?
答え2
sed実装はPCRE拡張をサポートしない可能性があります(拡張正規表現スイッチを\D
使用しても)。-E
以下が利用可能でなければなりません[^[:digit:]]
。
$ printf 'foo,bar,baz\nfoo,123,baz\n' | sed -n '/^[^[:digit:]]*$/p'
foo,bar,baz
答え3
使用が制限されていますかsed
、それとも使用できますかgrep
?
grep -v '[0-9]' direcciones.csv