2017-12-15 38 views
-4

パターンに一致する文字列を削除しようとしています。私はawkを介してパターンを一致させることができますが、awkとsedの組み合わせか、おそらくちょうどその場所で文字列を削除することができますawkですか?パターン内の文字列を一致および削除する方法

例:私は14日、15日と16日に一致する必要が

"|"その間のコンテンツを削除します。

前:

00000000,003377fdh,,BLUE,YELLOW,ORANGE,UANGTANG,||57000000|1250000000|2|ramp|CAR|||||||24000|11000|apples,12-15-2017 

後:

00000000,003377fdh,,BLUE,YELLOW,ORANGE,UANGTANG,||57000000|1250000000|2|ramp|CAR||||||,12-15-2017 
+3

「りんご」には何が起こったのですか? –

+2

どうやってリンゴが好きですか? – karakfa

+1

StackOverflowは[あなた自身の問題を最初に解決しようとする](http://meta.stackoverflow.com/questions/261592)、また[宿題に関する質問に答えない](https://softwareengineering.meta。 stackexchange.com/questions/6166)。既に試した内容を[最小限で完全で検証可能な例](http://stackoverflow.com/help/mcve)に表示するために質問を更新してください。詳細については、[良い質問をする方法](http://stackoverflow.com/help/how-to-ask)を参照し、[サイトの見学]を受けてください(http://stackoverflow.com/tour ):) – Barmar

答えて

0
awk -F '|' -v 'OFS=|' '{$13 = $16; NF -= 3; print}' file 

または

perl -F'\|' -ne 'splice(@F, 12, 3); print join("|", @F)' file 
+1

NFを減らすことの効果は、POSIXごとに定義されていない動作なので、YYMV ... –

+0

AWKステートメントが私に役立ちました。ありがとう! –

0

あなたがCA nでもこのsedを試してください

sed -E 's/(([^|]*\|){3})//5' infile 
関連する問題