grepを使用して2番目と5番目の列の文字列を一致させる正規表現

grepを使用して2番目と5番目の列の文字列を一致させる正規表現

次の文字列を含むファイル(test.txt)があります。

name1,6.5.8.12,specs1,version1,['66.55.89.12']
name2,19.13.13.159,specs2,version2,['13.13.173.59'; '14.19.232.42']
name3,141.101.196.40,specs3,version3,['11.01.196.0']

1)2番目と5番目の列のすべての文字列を、ドットで区切られた4つの数値形式でキャプチャしたいと思います。各数字は最大3桁まで可能です。

2)列2には1つの文字列があり、列5には無限の文字列がありますが、セミコロンで区切ります。

このコマンドを使用して5番目の列文字列をすべてキャプチャしようとしましたが(2番目と5番目の列をキャプチャする方法を理解する必要があります)、最初はこのコマンドは機能しませんでした。空のファイルが作成されました。

cat test.txt | cut -d ',' -f5 | grep -P -o '\d{1-3}\.\d{1-3}\.\d{1-3}\.\d{1-3}' > result.txt

ngを使用して2番目と5番目の列の特殊な形式の文字列をキャプチャする方法grep。ここで、文字列は点で区切られた4つの数字(1〜3桁)です。 2番目の列には1つの文字列だけがあり、5番目の列には無限の文字列がありますが、セミコロンで区切られていますか?

編集する: 予想出力:

6.5.8.12
66.55.89.12
19.13.13.159
13.13.173.59
14.19.232.42
141.101.196.40
11.01.196.0

また、結果がソートされ、一意になりたいことに注意してくださいsort -u。私の例には重複文字列はありませんが、実際のファイルで重複文字列が見つかった場合は、重複を避けたいと思います。

ベストアンサー1

スキーマを保持できる他のフィールドがあります(例では見つかりません)。そうでない場合は、お試しください。

grep -Eo "([0-9]{1,3}\.){3}[0-9]{1,3}" file | sort -u
11.01.196.0
13.13.173.59
141.101.196.40
14.19.232.42
19.13.13.159
6.5.8.12
66.55.89.12

数字で並べ替えるには、sortこの-gオプションを使用してください。

質問に記載されている独自のソリューションを表示するには、-f2,5入力cutフィールドを試してください。

おすすめ記事