Еще один:
xargs -0 python < <(find -name my_script.py -print0 -quit)
Теперь, как домашнее задание, попробуйте определить плюсы, минусы и различия всех методов, представленных здесь.
Если сопоставляемые столбцы отсортированы, вы можете использовать join:
join -o 2.1,2.2 file1 file2
join сопоставляет отсортированные столбцы из входных файлов и печатает их. -o 2,1,2.2 ограничивает вывод первым и вторым столбцами второго входного файла.
Вы можете использовать следующий однострочный:
cut -f1 fileA | grep -f - fileB > fileC
команда cut будет извлекать первый столбец из fileA (при условии разделения вкладок. используйте -d, чтобы указать что-то еще) команда grep выводит вывод cut и выполняет поиск fileB для всех строк. выход будет записан в fileC Вы уже получили отличные ответы. Просто добавьте в микс, вот подход Perl:
$ perl -ane '$i ? $k{$F[0]} && print : { $k{$F[0]}++ }; $i++ if eof' fileA fileB
seg1 one
seg2 two
seg3 three
И вариант ответа KasiyA в гольф:
$ awk 'NR==FNR ? a[$1] : $1 in a' fileA fileB
seg1 one
seg2 two
seg3 three
И вот своеобразное запутанное решение grep:
$ grep -Ff <(grep -oP '^\S+' fileA) fileB
seg1 one
seg2 two
seg3 three
Попытка сценария bash. (Не забудьте сделать исполняемый файл.)
fileA и fileB должны существовать в той же папке, что и скрипт.
Общий скрипт, который будет работать для любых двух файлов, описанных в сценарий и сгенерировать файл с соответствующим текстом как <fa>_<fb>_match.txt:
Чтобы использовать это, запустите ./script_name.sh fileA fileB
#!/bin/bash
fa="$1" # first file- which has columns
fb="$2" # second file - which has raw data to be searched
# file with name <fa>_<fb>_match.txt will be generated.
myarr=($(awk 'NR>1 {print $1}' "$fa")) # NR makes awk to ignore first row.
for index in ${!myarr[@]}; do
#echo $index/${#myarr[@]}
#echo "${myarr[index]}"
text="${myarr[index]}"
grep -w -F "$text" $fb >> $fa"_"$fb"_match".txt
done
# file with name <fa>_<fb>_match.txt will be generated.