2009-09-02 12 views
0

私は、テキストデータを含むファイルを持っています。ファイルは、セミコロンで区切られています。。私はデータを分離したい、つまり分割する場所;が発生し、出力ファイルにデータが書き込まれます。 bashスクリプトを使用する方法はありますか?ファイルを複数のセグメントに分割しますか?

答えて

1

試してみてください。これは、で区切られたフィールド内の各ラインを分割します

cat original_file.txt | cut -d";" -f1 > new_file.txt 

";"最初のフィールド(-f1)を選択します。 -f1、-f2、...または複数のフィールドを-f1-2、-f2-と指定して、他のフィールドにアクセスできます。

+1

猫が必要とされていないトン\ でそれを置き換える必要があり

output.txtとは「\ n」を>。カット ";" -f1 org_file.txt> newfile – ghostdog74

+0

複数のフィールドを切り詰めると、区切り文字の間に区切り文字が残ります。 –

4

FS(フィールド区切り変数)を​​3210に設定して、awkを入力することが最も一般的です。

Awkは、カラムベースのデータの選択ツールです(Perlを好む人もいますが、私はそうではありません)。

echo '1;2;3;4;5 
6;7;8;9;10' | awk -F\; '{print $3" "$5}' 

出力:

3 5 
8 10 

あなただけの改行にセミコロンをオンにする場合:

echo '1;2;3;4;5 
6;7;8;9;10' | sed 's/;/\n/g' 

は別々の行に番号1〜10に出力します。

これらのコマンドは明らかに私のテストデータを使用しているだけです。あなたは「TR」コマンドで別の文字に文字を翻訳することができ

sed 's/;/\n/g' <input_file >output_file 
3
#!/bin/bash 

while read -d ';' ITEM; do 
    echo "$ITEM" 
done 
+0

これは私の知る限り、bashだけでこれを行う唯一の効率的な方法です。すなわち、解析を行うために外部プログラムを使用することに頼ることなく。 – tylerl

0

:あなたがあなた自身のファイルにそれらを使用したい場合は、のようなものを使用。

cat input.txt | tr ';' \ nはは新しいラインであり、あなたがタブをしたい場合にのみ、あなたが

関連する問題