grepとsedの正規表現

grepとsedの正規表現

テキストファイルでaで始まるすべての行を見つけて置き換えようとしています。シングルスペースだから誰のキャラクターも。

最後にgrepで動作する正規表現を得ました。grep -E '^ .*$*' Contacts.vcf >> t.txt

その後、sedで使用するときはそうではありません。sed 's/^ .*$//g' Contacts.vcf > tt.txt(最初のスペースに関係なく)すべての行を取得します。\s{1}全部入れてみましたが、()実行できませんね。

初めてWindowsでPowerShellを使用しようとしたときも、同じ問題が発生しました。クロスプラットフォーム正規表現の詳細(?)がありません。

正規表現で単一のスペースで始まる行のみを検索するにはどうすればよいですか?

ベストアンサー1

grep「空白で始まり、後ろにランダムな文字が続きます」を実装することで単純化できます。

grep '^ .'

「空間で始める」としたら、簡単です。

grep '^ '

sed多様性すべてを入力して表示します。sedもう少し同様に動作するには、フラグとコマンドが grep必要です。これは、デフォルトでは出力を表示しないことを意味し、「この行を印刷します」を意味します。-np-np

例えば

sed -n '/^ /p'

同様に、スペースで始まるすべての行を表示します。

sed -n '/^ ./p'

スペースで始まり、その後に他の文字が続くすべての行を表示します。

編集する

他の意見によると、あなたの目標はスペースで始まる行を削除するようですsed

この場合

sed -i '/^ /d'

デフォルトでは、「スペースで始まる行を検索して削除」します。

例えば

$ cat x
hello
 there
everyone

$ sed -i '/^ /d' x

$ cat x
hello
everyone

おすすめ記事