1

以下に文字列があります

プロパティ| アカウントプロパティ| アクションプロパティ| アニバーサリープロパティ| アプリケーションプロパティ| AssistantNameプロパティ| AssistantDNAプロパティ| LabDNA...。

Linuxシェルから、以下の形式に処理するコマンドを見つけたいと考えています。DNAが含まれている単語のみを表示したいと思います。ここでの私にとってのポイントは、プロンプトからこれを行う方法を確認することです。

AssistantDNA
LabDNA
4

5 に答える 5

4

awk別:

awk -v RS='|' '/DNA/'
于 2012-07-30T15:17:59.870 に答える
3
echo "Properties | Account Property | Actions Property | Anniversary Property | Application Property | AssistantName Property | AssistantDNA Property | LabDNA" | tr '|' '\n' | grep DNA

版画

AssistantDNA Property 
LabDNA

最初に|を新しい行に置き換えてから、通常の grep を使用します。

于 2012-07-30T15:41:08.563 に答える
2

おそらく次のようなものです:

egrep -oi '[^ ]*dna[^ ]*' file
于 2012-07-30T14:20:36.807 に答える
2

拡張正規表現を使用する

データが/tmp/fooという名前のファイルにあると仮定すると、egrepまたは(システムによって異なります) を使用grep -Eして、必要な単語だけを拡張正規表現と一致させることができます。

egrep --only-matching --ignore-case '\b[[:alnum:]]+dna\b' /tmp/foo | sort

最後の並べ替えパイプラインは、結果をアルファベット順に並べ替えるだけです。あなたが述べた要件に基づいて、それは確かに必要ではありません。

于 2012-07-30T14:27:27.933 に答える
2
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....
于 2012-07-30T14:41:35.067 に答える