sedを使用してファイルから行の一部を抽出する

sedを使用してファイルから行の一部を抽出する

ファイルから1行の一部を読みたいです。たとえば、

POP3_SERVER_NAME =ローカルホスト

私はlocalhostsedを使って戻りたいです。

このテキストは3行目にあります。私は行を抽出するためにこれを行います:

sed -n '3p' installation.sh

部分のみを抽出する方法はlocalhost

ベストアンサー1

awkはおそらくここでより良いツールです。

$ cat test.dat
LINE 1
LINE 2
POP3_SERVER_NAME = localhost

「POP3_SERVER_NAME」を含む行を検索し、最後のフィールドを印刷してください。これは、POP3_SERVER_NAMEが常に3行目にあることには依存しません。これはおそらく良いことです。

$ awk '/POP3_SERVER_NAME/{print $NF}' test.dat
localhost

アプリケーションによっては、正規表現をより厳密にする必要があるかもしれません。たとえば、次の行だけを一致させたい場合があります。スタートPOP3_SERVER_NAMEへ。

$ awk '/^POP3_SERVER_NAME/{print $NF}' test.dat
localhost

sedの使用はそれほど直感的ではありません。 (ありがとうございました。行の先頭から「=」の後のオプションのスペースまでのすべてのテキストを空の文字列に置き換えます。その後、印刷します。

sed -n -e '/POP3_SERVER_NAME/ s/.*\= *//p' test.dat

おすすめ記事