sed(またはsedが機能をサポートしていない場合はgrep)を使用して、テキストファイルの特定の行に文字、ドット(.)、スペース、数字のみをコピーし、sed出力をvarに送信する方法を探しています。部分テキストを削除したくありません。
sedは、テキストファイルの指定された行のみを読み取り、az、AZ、0-9文字、および"。"シンボルだけをコピーしたいです。
いくつかのWebページとSEDのGNUのマニュアルページを参照してください。 https://www.gnu.org/software/sed/manual/sed.html
次のコマンドを使用して実行しようとしています。
NAME1=$(sed -n '1p' -e 's/.*\[:alpha:digit:blank:punct:]/`\1/p`' txtfile)
しかし、実際には消去されていないエラーメッセージが表示されます。
test.sh: 1: [: sed: unexpected operator
-n
sedコマンドでさまざまな種類の「文字クラスと角括弧式」を表示する方法を覚えておらず、オプションの場所を使用してsedが作業する必要があるテキスト行を表示するのかわかりません。
パラメータ/オプションを使用して、一致する\1/p
パターン(sedが何かを見つけた場合)が元のファイルに残る必要があることをsedに指示します。
答え1
たとえば、POSIX文字クラスとリテラル文字を連結して文字範囲を設定するには、.
次のようなものが必要です。
[[:alpha:][:digit:].]
そしてそれを否定する
[^[:alpha:][:digit:].]
したがって、すべての文字を削除(空の文字で置き換える)とは別に英数字、10進数、ピリオド:
sed 's/[^[:alpha:][:digit:].]//g' somefile