Как напечатать определенный столбец в файл, если условие видно в нескольких файлах?

Немного сложно понять, что вы на самом деле пытаетесь сделать. Если вы хотите объединить содержимое $sourcelistи $tools/$2и выполнить его в Bash, вы можете использовать catс этими двумя файлами и передать sshследующим образом:

cat "$sourcelist" "$tools/$2" | sshpass -e ssh $usrconn@$ipconn 
1
10.09.2017, 10:21
2 ответа

Это можно легко сделать только с помощью awk.

awk '($1==1){print $NF>FILENAME"_new"}' anacovis2_{1..2181}_summary_betai_reg.out

Это проверит, был ли первый столбец равен 1 $1==1, затем напечатает последний столбец $NFв новый файл с форматом того же FILENAME, но заканчивается на _new, поэтому выходные файлы будут FILENAME_new.

Чтобы прочитать все 2181 файл, мы использовали параметр раскрытия фигурной скобки .

4
27.01.2020, 23:16

Простое решение:

for((i=1;i<2182;i++)); do
    file_in="anacovis2_${i}_summary_betai_reg.out"
    file_out="awk_output_${i}"
    awk '$1==1 { print $NF }' "$file_in" >"$file_out"
done

Более быстрым решением может быть открытие входных и выходных файлов с помощью awk, чтобы требовался только один awkпроцесс вместо 2181...

1
27.01.2020, 23:16

Теги

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