Чтение и добавление в файл одновременно с сохранением конца строки

Я бы использовал:

grep -o -P '.{1}/.{1}' file

В вашем случае:

zcat vcf.gz | grep -o -P '.{1}/.{1}' 

Edit:

zcat vcf.gz | grep -o -P './.' | uniq

или если вы хотите по порядку:

zcat vcf.gz | grep -o -P './.' | sort -u

2
18.06.2016, 16:47
2 ответа

Я бы попробовал что-то вроде:

awk -v pattern="Testing:" '$0 ~ pattern { sub(pattern, "  *"); print }' 

Это должно сработать с любой версией sed , поскольку он не содержит очевидных расширений. Нет необходимости явно обрабатывать символы новой строки, если вы позаботитесь о правильном заключении переменных в кавычки, чтобы предотвратить разделение слов.

0
27.01.2020, 22:46

Предполагается, что $ TEST_RESULTS - это имя файла, содержащего результаты теста. Если я правильно понимаю, вы хотите добавить список протестированных конфигураций в тот же файл.

Итак, используйте временный файл. Затем добавьте этот файл к оригиналу.

tmpfile="$( mktemp )"
echo "Configurations tested:" >"$tmpfile"
sed -n 's/^Testing: \(.*\)/  * \1/p' "$TEST_RESULTS" >>"$tmpfile"

cat "$tmpfile" >>"$TEST_RESULTS"
rm -f "$tmpfile"

Если у вас нет mktemp , вы можете использовать

tmpfile="$TEST_RESULTS.tmp"

или

tmpfile="/tmp/$( basename "$TEST_RESULTS" ).tmp"

или что-то подобное ... при условии, что этот файл еще не существует (в этом случае он будет перезаписан и потом удалил).

0
27.01.2020, 22:46

Теги

Похожие вопросы