最初の10文字に特定の文字列が含まれている場合は、sedを使用してファイルの行を印刷します。

最初の10文字に特定の文字列が含まれている場合は、sedを使用してファイルの行を印刷します。

私のUbuntuコンピュータには次のファイルがあります。

ファイル.txt

http://example.com/https:/www.google.com
http://test.example.com
https://www.example.com
https://www.click.example.com
http://example.com
http://test.example.com
https://www.example.com/https:/www.google.com
https://www.click.example.com

新しいファイルに出力したい。

新しいファイル.txt

https://www.example.com
https://www.click.example.com
https://www.example.com/https:/www.google.com
https://www.click.example.com

以下のようにsedを使用していますが、出力ファイルには次のものを含むすべての行が含まれています。httpsラインどこでも。

sed -n '/https/p' file.txt > new_file.txt

検索を最初の5文字に制限したいです。最初の5文字で見つかった場合はhttpsその行を印刷し、それ以外の場合はスキップします。

ありがとうございます。

答え1

sedデフォルトの正規表現(BRE)はテキスト検索にデフォルトで使用されるため、次のものを使用できます。構文:

^

パターンスペースの先頭にある空の文字列と一致します。つまり、曲折記号の後に表示される内容は、パターン空間の先頭に表示する必要があります。

だからあなたのため:

sed -n '/^https/p' file.txt > new_file.txt

または以下を使用してくださいgrep

grep '^https' file.txt > new_file.txt

関連情報