2013-06-21 4 views
0

Как можно разделить (в среде командной строки linux-bash) текстовый файл на несколько текстовых файлов на основе выражения reg, где выражение является частью строки? Пример:текстовый файл разбит на основе регулярных выражений

original.txt:

1,Johnny good,91240,***** 
2,Joe non-frequent,34755,*** 
4,Mary bad credit,92323,* 
2,Joe2 non-frequentsd,34755,*** 
223,Joe3 frequentsd,34755,*** 

Файлы после раскола:

91240.txt:

1,Johnny good,91240,***** 

34755.txt:

2,Joe non-frequent,34755,*** 
2,Joe2 non-frequentsd,34755,*** 
223,Joe3 frequentsd,34755,*** 

92323.txt :

4,Mary bad credit,92323,* 

Благодарим Вас за отзыв.

ответ

4
awk -F, '{print >$3".txt"}' your_file 
+0

ой, команда линукс линии, как я люблю тебя. – hometoast

+0

Если я помню, некоторые реализации awk заставляют вас писать 'awk -F, {file = $ 3" ​​.txt "; print> file} '' –

0

Попробуйте это ..

var=`awk -F, '{print $3}' input.txt`; 
for word in $var 
do 
    echo $word 
    grp="grep $word input.txt" 
    out=$($grp); 
    echo $out > "$word.txt" 
done 
Смежные вопросы