Изменить текстовый файл с оператором if-else

Вы можете сделать это с помощью GNU find или другого find, который поддерживает -path, но я не думаю, что это более элегантно.

find src \( -type f -executable ! -path 'src/*/*' -o -name '*.txt' \) \
     -exec ln -fs {}. +

Вместо этого вы можете использовать zsh. Его квалификаторы glob более лаконичны, чем синтаксис find.

ln -sf src/*/*(N*.) src/**/*.txt.

-7
26.03.2020, 02:42
3 ответа
awk '{if((NF==5) && ($2 == $4)){$7=$5;$5=$3;$6=$4;$3=11;$4=$2;print $0}else if ((NF==5) && ($1 == $3)){$7=$5;$5=$3;$6=$4;$4=5;$3=$1;print }else{print $0}}' filename

выход

3 1 11 1 10 1 6
9 4 11 4 2 4 1
9 2 11 2 2 2 1
2 4 2 5 2 2 2
9 4 9  2 9 1 2 
1
19.03.2021, 02:32
$ awk 'NF==5{ if ($2==$4) $2 = $2 OFS 11 OFS $4; else if ($1==$3) $2 = $2 OFS $1 OFS 5 } 1' file
3 1 11 1 10 1 6
9 4 11 4 2 4 1
9 2 11 2 2 2 1
2 4 2 5 2 2 2
9 4 9  2 9 1 2
2
19.03.2021, 02:32

Вот команда awk в одной -строке, которая дает требуемый результат:

awk '{if (NF == 5 && $2 == $4 ){a=11; б=$2; выведите $1 " " $2 " " a " " b " " $3 " " $4 " " $5;} else if (NF == 5 && $1 == $3 ){c=$1; д=5; print $1 " " $2 " "c " "d " "$3 " " $4 " " $5;} else print $0}' пример _simple.txt

0
19.03.2021, 02:32

Теги

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