2017-02-22 13 views
1

Iは、以下の様々な組み合わせを試してみた:テキストファイルを1行ずつ2つのテキストファイルに分割する方法はありますか?

awk -F" ||| " '{$0=$1}1' source_file.txt > column1.txt 
awk -F" ||| " '{$0=$1}2' source_file.txt > column2.txt 

又は

awk 'BEGIN {FS=" ||| ";}{print $1}' source_file.txt > column1.txt 
awk 'BEGIN {FS=" ||| ";}{print $2}' source_file.txt > column2.txt 

代わりに所望の出力を、Iのいずれかは、全体のライン(例foo bar ||| baz。)を取得または私は最初の取得単語(例:foo)。

あなたはここで、手助けしたい場合は、サンプルのテキスト・ファイルです:

カラム1:

source_file.txt

foo bar ||| baz 
qux ||| quux 
corge grault ||| garply waldo 
fred ||| 
xyzzy ||| thud 

そしてここでは、所望の出力です。 txt

foo bar 
qux 
corge grault 
fred 
xyzzy 

column2.txt

bar 
quux 
garply waldo 

thud 

答えて

4
awk -F' \\|\\|\\| ?' '{print $1 > "column1"; print $2 > "column2"}' file 

以上の一般

awk -F' \\|\\|\\| ?' '{for(i=1;i<=NF;i++) print $i > "column"i}' file 
+0

ありがとうございました。このエラーも発生しますか? awk:ソース行1の文法エラーです。 文脈は \tです。(i = 1; i <= NF; i ++)$ i> >>> "column" i <<<}を出力します。 1行目 – Ryan

+1

私の場合はエラーはありませんが、スクリプトに一重引用符を使用していることを確認してください。 – karakfa

0

あなたはtrフラグが一緒に区切り文字を絞り

cat /tmp/a | tr -s '|' | cut -d'|' -f1 #for part 1 

cat /tmp/a | tr -s '|' | cut -d'|' -f2 | sed -E "s/^[[:space:]]+//g" #for part 2 

を試みることができます。

関連する問題