すべての空白を改行/段落記号に置き換えて単語リストを作成する
2023-12-10 11:21:51
質問
授業で翻訳するギリシャ語のテキストのボキャブラリーリストを作ろうとしています。私は、すべてのスペースまたはタブ文字を段落マークに置き換え、すべての単語がそれ自身の行に表示されるようにしたいのです。どなたかsedコマンドを教えてください。私はまだsedを理解しようとしています。
どのように解決するのですか?
最近のバージョンの sed では、標準入力を編集して、標準出力に
$ echo 'τέχνη βιβλίο γη κήπος' | sed -E -e 's/[[:blank:]]+/\n/g'
τέχνη
βιβλίο
γη
κήπος
単語帳のファイルが
lesson1
と
lesson2
のように、sed の標準出力をファイルにリダイレクトします。
all-vocab
と共に
sed -E -e 's/[[:blank:]]+/\n/g' lesson1 lesson2 > all-vocab
何を意味するのか
-
は
文字クラス
[[:blank:]]
は,スペース1文字または タブ文字にマッチします。-
使用する
[[:space:]]
を使用します(一般的にはスペース、タブ、改行、キャリッジリターン、フォームフィード、垂直タブ)。 -
は
+
という量詞は は一つ以上のパターンにマッチします。 . -
では
[[:blank:]]+
は、すべてスペースまたはタブである1つ以上の文字のシーケンスです。
-
使用する
-
は
\n
は、あなたが必要とする改行です。 -
は
/g
修飾子は、置換を一度だけでなく何度も行うことを意味します。 -
は
-E
オプションは POSIX 拡張正規表現構文を使うように指示し、 特にこの場合+
という量詞を使います。がなければ-E
がない場合、sed コマンドは次のようになります。sed -e 's/[[:blank:]]\+/\n/g'
. (ただし\+
ではなく、単純な+
.)
Perl 互換の正規表現
Perl互換の正規表現とPCREに対応したsedに慣れている方は
\s+
のように、少なくとも一文字の空白文字がある場合にマッチします。
sed -E -e 's/\s+/\n/g' old > new
または
sed -e 's/\s\+/\n/g' old > new
これらのコマンドは、ファイル
old
という名前のファイルに結果を書き込みます。
new
という名前のファイルに書き出す。
最大限のポータビリティ、最大限のクルーティネス
sed のほぼすべてのバージョンに戻るには バージョン 7 Unix からのほとんどすべてのバージョンに戻ると、コマンドの呼び出しはもう少しバロック的です。
$ echo 'τέχνη βιβλίο γη κήπος' | sed -e 's/[ \t][ \t]*/\
/g'
τέχνη
βιβλίο
γη
κήπος
注意事項
-
ここでは、謙譲語の存在すら想定していません。
+
という量詞の存在を仮定せず、スペースかタブをひとつだけ使ってシミュレートしています ([ \t]
)の後に、0個以上([ \t]*
). -
同様に、sedが理解できないと仮定すると
\n
を理解しないと仮定すると、コマンドライン上でそれをそのまま含める必要があります。-
は
\
とコマンドの最初の行の終わりは、直後の改行をエスケープする継続マーカーであり、コマンドの残りは次の行にあります。- 注意 エスケープされた改行の前には空白があってはならない。つまり、最初の行の終わりは でなければなりません。 バックスラッシュの後に行末がなければなりません。
- このエラーを起こしやすいプロセスは、なぜ世界が可視文字に移行したかを理解するのに役立ちます。また、コピー アンド ペーストでコマンドを試す際には、いくらかの注意を払う必要があります。
-
は
バックスラッシュとクォートに関する注意
上記のコマンドはすべてシングルクォート (
''
)ではなく、ダブルクォート(
""
). と考えてください。
$ echo '\\\\' "\\\\"
\\\\ \\
つまり、シェルはダブルクォート文字列と比較して、シングルクォート文字列に異なるエスケープルールを適用します。正規表現でよく使われるバックスラッシュは、通常 シングル 引用符で囲みます。
関連
-
[解決済み】REエラー:Mac OS Xでの不正なバイトシーケンス
-
[解決済み】正規表現でのコロン記号の使用について
-
[解決済み] 正規表現 AND 演算子
-
[解決済み] sedで行全体を置き換えるには?
-
[解決済み] 正規表現で任意の文字数を表す記号?
-
[解決済み] 一致した正規表現パターンを awk で表示するには?
-
[解決済み] シェルスクリプトで正規表現を使用するにはどうすればよいですか?
-
[解決済み] Githubの「ブランチ名パターン」の否定
-
[解決済み] 2つ以上の連続した文字を検索するためのRegEx
-
[解決済み] TCL/EXPECTで$expect_outを使用して変数を割り当てるにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】正規表現でのコロン記号の使用について
-
[解決済み】Vimで正規表現に置換すると、`E488: Trailing characters`が発生します。
-
[解決済み] Regex オプション文字にマッチさせる方法
-
[解決済み] R 文字列から最初の文字を削除する
-
[解決済み] | の後をすべて削除する正規表現 (| と共に)
-
[解決済み] この正規表現に負の小数点を含めるにはどうしたらよいですか?
-
[解決済み] 特定の文字が後にない'単語'を探す
-
[解決済み] 正規表現[^ΘdΘs]と[ΘdΘs]の違いは何ですか?
-
[解決済み] 正規表現で複数行にまたがる任意の文字にマッチさせるにはどうしたらよいですか?
-
[解決済み] Githubの「ブランチ名パターン」の否定