2016-11-24 2 views
0

人の名前、そのグループ、住んでいる都市、そして働くことのできる日でいっぱいの.csvファイルがありますこれらの4つの情報は、この ":"で区切られています。2つの列を抽出し、最初の列の特定の単語を残りのものを切り捨てずに検索する

例えば

Dennis:GR1:Thursday:Paris 
Charles:GR3:Monday:Levallois 
Hugues:GR2:Friday:Ivry 
Michel:GR2:Tuesday:Paris 
Yann:GR1:Monday:Pantin 

Iは、残りの2列を切断することなく、2番目と3番目の列、及びプリント「S」で終わる名前を含むすべての行を切断したいです。

例えばのために、私はそのようなものを持っているしたいと思います:私はgrepをカット、としてこれにしようとしましたが、カットを使用すると、ちょうど第一の残りを持って終了

Dennis:Paris 
Charles:Levallois 
Hugues:Ivry 

私は自分自身を理解できるようになることを願っています!

+0

実際、申し訳ありません。私は編集して私のポストと少しきれいにしようとしました。 – TierOne

+0

CSVファイルは、区切り文字(通常コンマ、セミコロン、タブ)で区切られた各行のデータを含むスプレッドシートファイルであるという事実に同意しますか?私にとってはそうです。私の場合、データはコロン ":"で区切られています。 – TierOne

+0

私に与えられたファイルは.csvファイルなので、私はそれがcsvファイルだと言っています。そうでなければ、私はそれを言っていないでしょう。 – TierOne

答えて

0

あなたが必要とするすべてがあるように聞こえる:

$ awk 'BEGIN{FS=OFS=":"} $1~/s$/{print $1, $4}' file 
Dennis:Paris 
Charles:Levallois 
Hugues:Ivry 

はgrepの+カットソリューションを要求してあなたのコメントに対処するには:

$ grep -E '^[^:]+s:' file | cut -d':' -f1,4 
Dennis:Paris 
Charles:Levallois 
Hugues:Ivry 

が、awkはこれを行うには正しい方法です。

+0

しかし、完璧に動作しますが、あなたが私に与えたコマンドと同じ出力をawkなしで使うことは可能です。たとえば、grepやcutなど。 – TierOne

+0

OKこれを追加しましたが、awkは本当にこの種の問題の正しいツールです。 –

+0

grepコマンドは私にとっては機能しません。 "s"で終わらない名前を表示します。バニョレ フレデリック:パリ アナイス:バニョレ ニコラス:ルヴァロア セリーヌ:エヴリー パトリック:パリ バスティアン:Paris.6ここで出力 ティボーの一部です。 Cyril:Ivry – TierOne

関連する問題