以下に文字列があります
プロパティ| アカウントプロパティ| アクションプロパティ| アニバーサリープロパティ| アプリケーションプロパティ| AssistantNameプロパティ| AssistantDNAプロパティ| LabDNA...。
Linuxシェルから、以下の形式に処理するコマンドを見つけたいと考えています。DNAが含まれている単語のみを表示したいと思います。ここでの私にとってのポイントは、プロンプトからこれを行う方法を確認することです。
AssistantDNA
LabDNA
awk別:
awk -v RS='|' '/DNA/'
echo "Properties | Account Property | Actions Property | Anniversary Property | Application Property | AssistantName Property | AssistantDNA Property | LabDNA" | tr '|' '\n' | grep DNA
版画
AssistantDNA Property
LabDNA
最初に|を新しい行に置き換えてから、通常の grep を使用します。
おそらく次のようなものです:
egrep -oi '[^ ]*dna[^ ]*' file
データが/tmp/fooという名前のファイルにあると仮定すると、egrepまたは(システムによって異なります) を使用grep -Eして、必要な単語だけを拡張正規表現と一致させることができます。
egrep --only-matching --ignore-case '\b[[:alnum:]]+dna\b' /tmp/foo | sort
最後の並べ替えパイプラインは、結果をアルファベット順に並べ替えるだけです。あなたが述べた要件に基づいて、それは確かに必要ではありません。
grep -Po "\S*DNA\S*" yourFile
テスト:
kent$ echo "Properties | Account Property | Actions Property | Anniversary Property | Application Property | AssistantName Property | AssistantDNA Property | LabDNA...."|grep -Po "\S*DNA\S*"
AssistantDNA
LabDNA....