Я бы использовал:
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
Я бы попробовал что-то вроде:
awk -v pattern="Testing:" '$0 ~ pattern { sub(pattern, " *"); print }'
Это должно сработать с любой версией sed
, поскольку он не содержит очевидных расширений. Нет необходимости явно обрабатывать символы новой строки, если вы позаботитесь о правильном заключении переменных в кавычки, чтобы предотвратить разделение слов.
Предполагается, что $ 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"
или что-то подобное ... при условии, что этот файл еще не существует (в этом случае он будет перезаписан и потом удалил).