2016-03-23 5 views
0

とは別に、カラム1と結合し、私は次のように私がする必要がどのような2列複数のカラム2からの試合と端末

fsfsfsf ukd18178486|ukd18178488 
adadvafv ukd17647236|ukd17647238 
bcghdbdhdb ukd18256238|ukd18256240|ukd18256242|ukd18256243|ukd18256244 
dadadad ukd18318607|ukd18318608|ukd18318609 

でコンテンツを持つファイルを持っている

のようなパターンを持つ別のファイルを生成しています
fsfsfsf?ukd=ukd18178486 
fsfsfsf?ukd=ukd18178488 
adadvafv?ukd=ukd17647236 
adadvafv?ukd=ukd17647238 
bcghdbdhdb?ukd=ukd18256238 
bcghdbdhdb?ukd=ukd18256240 
bcghdbdhdb?ukd=ukd18256242 

基本的には、最初の列のすべての行を2番目の列のすべての対応する 'ukd [0-9] +'と結合し、最初の列のすべての行が使い果たされるまで続きます。 awk/grep/sedの任意の組み合わせを使用するアプローチはありますか?これは、(GNU SED)あなたのために働くかもしれない

答えて

0

awkなど最初の置換が1から2にラインを変える方法を見ることができます!

$ awk '{n=split($2,a,"|"); for(i=1;i<=n;i++) printf "%s?udk=%s\n",$1,a[i]}' file 

fsfsfsf?udk=ukd18178486 
fsfsfsf?udk=ukd18178488 
adadvafv?udk=ukd17647236 
adadvafv?udk=ukd17647238 
bcghdbdhdb?udk=ukd18256238 
bcghdbdhdb?udk=ukd18256240 
bcghdbdhdb?udk=ukd18256242 
bcghdbdhdb?udk=ukd18256243 
bcghdbdhdb?udk=ukd18256244 
dadadad?udk=ukd18318607 
dadadad?udk=ukd18318608 
dadadad?udk=ukd18318609 
0

sed -r 's/^((.*)[^|]*)\|/\1\n\2/;s/ ([^0-9]*)/?\1=\1/;P;D' file 

改行やレコードのキーによって|を交換してください。次に、レコードを必要な形式に変換するためにレコードのパターンを一致させます。最初の行を印刷し、最初の行を削除して繰り返します。

これが最も可能性が高いつの置換を達成することができたが、第2の置換が削除された場合、観察者は救助に

関連する問題