2017-01-12 3 views
1

У меня есть текстовые файлы (все файлы имеют эту схему в каждой строке 123:abc) и хотят сделать с ними два отдельных файла. Один большой файл со всеми строками (но uniq) и с этим файлом со строками после токена «:».Сделать bashscript короче с трубами

Это здесь работает:

cat *.txt >> bigtextfile.txt 
sort -u bigtextfile.txt -o bigtextfile.txt 
cat bigtextfile.txt | cut -d: -f2 >> bigtextfile-filtered.txt 

Но я могу это сделать намного короче с трубами?

ответ

3

sort принимает несколько входов файлов, так что вы можете создавать свою bigtextfile.txt в один присест:

sort -u *.txt -o bigtextfile.txt 

cut также принимает входной параметр файл, нет необходимости в cat:

cut -d: -f2 bigtextfile.txt >> bigtextfile-filtered.txt 

Если вы не нуждаетесь в bigtextfile.txt в себе и просто использовать его в качестве промежуточного продукта для получения bigtextfile-filtered.txt вы можете сделать это в одной строке:

sort -u *.txt | cut -d: -f2 >> bigtextfile-filtered.txt 
1

Я предлагаю:

sort -u *.txt | cut -d: -f2 >> bigtextfile-filtered.txt 
0

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

cat *.txt | sort -u | cut -d: -f2 >> bigtextfile-filtered.txt 
Смежные вопросы