цикл sed для удаления строки со строками из списка строк из текстового файла

Короткий ответ: ничего.

Если процесс ничего не принимает в STDIN, вы все равно можете передать его по конвейеру. Точно так же вы все еще можете передать данные из процесса, который ничего не создает в STDOUT. По сути, вы просто передаете один индикатор EOF во второй процесс, который просто игнорируется. Конструкция с использованием пайпа — это просто вариация на тему «каждый процесс запускает еще два». Эта форк-бомба также может быть (а иногда и так) записана так:

:(){ :&:; }; :

Если первый рекурсивный вызов сразу становится фоновым, то выполняется второй вызов.

В целом, да, символ вертикальной черты (|) используется для того, чтобы сделать именно то, что вы упомянули — подключить STDOUT первого процесса к STDIN второго процесса. Это также то, что он делает здесь, хотя единственное, что когда-либо проходит через этот канал, - это единственный индикатор EOF.

0
03.12.2018, 23:59
2 ответа

Для Unix, таких как MacOS/BSD/Solaris, вам нужно передать пустую строку в sed, чтобы избежать проблемы, с которой столкнулась Эмили, поэтому ответ будет:

while read -r line 
do
    echo $line
    sed -i "" "/$line/d" /my/path/ITS.OTU.table.tsv
done < /my/path/species.txt
0
28.01.2020, 02:19
grep -v -xF -f /my/path/species.txt /my/path/ITS.OTU.table.tsv >/my/path/ITS.OTU.table.tsv.new

Это будет писать /my/path/ITS.OTU.table.tsv.new. Его содержимым будут все строки исходного файла, которые не совпадают точно со строкой в ​​/my/path/species.txt.

Опция -xFзаставляет строку -полностью совпадать с идентичной строкой, а -f filenameсчитывает строки для сопоставления из заданного файла. -vменяет смысл совпадения, так что возвращаются только строки , не соответствующие .

Если вам нужно ослабить соответствие, чтобы строка, считанная из /my/path/species.txt, могла соответствовать в любом месте в каждой строке /my/path/ITS.OTU.table.tsv, удалите параметр -x.

Если вы знаете, где в каждой строке должно проверяться совпадение, можно использовать awkдля сравнения только этих битов данных, но в настоящее время мы не знаем, как выглядят ваши данные.

5
28.01.2020, 02:19

Теги

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