ピリオドの後、1つ以上のスペースのファイルを検索して2つのスペースに置き換えます。 [閉じる]

ピリオドの後、1つ以上のスペースのファイルを検索して2つのスペースに置き換えます。 [閉じる]

Q:次の文が始まる前に、すべての文の終わりに2つのスペースが必要なuserNotes.txtの修正テキストを印刷(画面に表示)するには、どのコマンドを実行しますか?

これは私のコードです

sed 's/.\s/.\s\s/' 

ただし、これにより、ドットとスペースの2つで終わる行も、ドットとスペースの3つに変わります。

ベストアンサー1

sed 's/\.[[:space:]]\{1,\}/.  /g'

ドット(\.またはと一致[.].すべての文字と一致する必要があります)、1つ以上の空白文字(および[[:space:]]と一致する標準文字\s)、.2つのスペースで置き換えられます。

!次のこともできます?

sed 's/\([.!?]\)[[:space:]]\{1,\}/\1  /g'

最新バージョンのGNUでは、sedこれを次のように短縮できます。

sed -E 's/([.!?])\s+/\1  /g'

または以下を使用してperl

perl -lne 's/[.!?]\K\s+/  /g'

[[:space:]]\sすべての空白文字と一致します(perlASCII文字のみ可能)。これには、MS-DOS テキスト ファイルの行末に表示されますが、通常は空白として使用されない CR 文字が含まれます。したがって、これらのコマンドを MS-DOS 形式のファイルに適用すると、最終的に MS-DOS 行区切り文字が壊れる可能性があります。

/代わりにCRなしで[[:space:]]/を使用できます(サポートされていますがGNUではありません)。\s[[:blank:]]\h\hperlsed

おすすめ記事