вторник, 17 сентября 2013 г.

Полезные однострочники

Приведу некоторые полезные однострочники, с помощью которых можно автоматизировать ручные операции с файлами:



1. Скопировать все рисунки из файла LaTeX в указанную директорию. В консоли выполнить в директории, где находится LaTeX-файл (всё в одну строку):  


for file in `cat имя_файла.tex|grep includegraphics|
cut -d "{" -f2|sed -e 's/}//g'` ;  
do cp $file путь_куда_нужно_всё_скопировать;done  


Рисунки должны быть указаны с помощью команды includegraphics. Однострочник выбирает из TeX-файла, все строки, содержащие includegraphics и затем из них при помощи команд cut и sed вычленяет имя файла. Команда cp копирует файлы. Попробуйте сделать то же самое в MSWord/LibreOffice.


2. Сконвертировать все рисунки в директории из одного формата в другой (например из png в tiff).

 
for file in *.png ;do convert $file -alpha off $file.tif;done


Должен быть установлен ImageMagick. Вызывается утилита convert для преобразования графики. Параметр -alpha off отключает прозрачность.


3. Переставить местами строки и столбцы в csv - файле. Взято с какого-то англоязычного форума. Однострочник на Python.

python -c 'import csv,sys;
csv.writer(sys.stdout).writerows(map(None,*list(csv.reader(sys.stdin))))'
<файл.csv>файл.csv

4. Выбрать из текстового файла строки, находящиеся между строками BEGIN и END включительно.

cat наш_файл|sed -n -e '/BEGIN/,/END/p'

5. Выбрать из текстового файла строки начиная со строки номер N до строки END. Например N=1.

cat наш_файл|sed -n -e '1,/END/p'

6. Применение двух предыдущих однострочников. Однострочник выбирает все рисунки и таблицы из файла LaTeX и генерирует из исходного файла файл с только таблицами и рисунками. Попробуйте то же самое сделать в Word/LibreOffice!
iconv -f koi8r -t utf8 исходный_файл.tex|
sed -n -e '1,/\\begin{document}/p'
-e '/\\begin{figure}\[\!ht\]/,/\\end{figure}/p'
-e '/\\begin{table}\[\!ht\]/,/\\end{table}/p'|
iconv -f utf8 -t koi8r -o выходной_файл.tex

1 комментарий: