2016-05-11 7 views
4

私はインタビュー中にこの質問を受けました。私はxreadlines()のようなjavaやpythonを使ってファイル全体を走査して列を取得することができると言ったが、面接官はlinux cmdを使用したかった。それをどうすれば実現できますか?linuxコマンドを使用して非常に大きなcsvファイルの2番目の列を取得するにはどうすればよいですか?

+0

ここでは簡潔に与えられた、私は可能なもっとも怠慢な方法であなたに完全な答えを与えている:最初にここのhttpを行きます:/ /stackoverflow.com/questions/1521462/looping-through-the-content-of-a-file-in-bashここに行くhttp://stackoverflow.com/questions/19737675/shell-script-how-to-extract -string-using-regular-expressionsを使用して、regExに '^。*、(* *)、。* $$(またはそのようなもの)を使用してください。 – Deryck

答えて

3

あなたはコマンドawkを使用することができます。以下

は、ファイルの2番目の列をプリントアウトの例です。

awk -F, '{print $2}' file.txt 

そして、それを保存するために、あなたはそれをファイルにリダイレクトします。

awk -F, '{print $2}' file.txt > output.txt 
+0

これはcsvファイルの問題を解決しますが、 'ポイント? awkを使用して列をファイルに出力できますか? – Pythoner

+1

結果のファイルを作成するための標準I/Oリダイレクション。 awk -F、 '{print $ 2}' file.txt/some/file/path' –

+1

上記のawkを使った解決策は、-Fフラグがなければ動作しません。 awkはカンマではなく、デフォルトで白いスペースを分割します。 – davlet

2

あなたはcutを使用することができます。

cut -d, -f2 /path/to/csv/file 
1

私はアンドレアスの答えに追加したいです、まだコメントできません。

csvでは、awkにフィールドセパレータの引数を指定するか、コンマではなく空白でバインドされたフィールドを定義する必要があります。 (。明らかに、異なるフィールド区切り文字を使用してCSVファイルを宣言するために別の文字が必要になります)

awk -F, '{print $2}' file.txt 
関連する問題