Если условие как один лайнер [дубликат]

try

awk 'BEGIN { FS="|"} 
     FILENAME=="code-desc.txt" { descr[$1]=$2 ; next }
      { for(i=1;i<=FS;i++) printf "%s|",descr[$i] ; printf "\n" ;} '  code-desc.txt datafile.txt

где

  • BEGIN {FS = "|"} указывает awk использовать | как разделитель
  • FILENAME == "code-desc.txt" {descr [$ 1] = $ 2; next} при разборе code-desc.txt построить массив.
  • для всех остальных строк вывести описание поля.

обратите внимание:

  • соблюдайте порядок файлов (code-desc.txt перед datafile.txt),
  • код между одинарными кавычками можно поместить в сценарий awk,
  • это не сработает, если у вас есть неправильный код.
2
12.02.2017, 00:18
2 ответа

Наиболее читабельный способ (IMHO) - использовать утилиту test явно:

test -f ~/.ssh/config && echo -e "\xE2\x9C\x94 Config file existing"
4
27.01.2020, 21:49

Попробуйте это,

if [ -f ~/.ssh/config ]; then echo -e "\xE2\x9C\x94 Config file existing"; fi

или

[ ! -f ~/.ssh/config ] || echo -e "\xE2\x9C\x94 Config file existing"

или

[ -f ~/.ssh/config ] && echo -e "\xE2\x9C\x94 Config file existing"

и else ] должен быть последним

[ -f ~/.ssh/config ] && echo -e "\xE2\x9C\x94 Config file existing" || echo -e "\xE2\x9E\x97 No config file"
7
27.01.2020, 21:49

Теги

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