次の文字列を含むファイル(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
フィールドを試してください。