, читаемый и лаконичный подход будет awk
] системная функция
awk -F',' 'system("mv " $1 " " $2)' mappingFile.csv
, которая запускает команду для каждой строки входного файла
краткое изложение команды
awk
- утилиты UNIX, которая отлично подходит для обработки табличных данных. data -F ','
" F
ield separator" - это система с запятой ("mv" $ 1 "" $ 2)
запускается для каждой строки ввода файл
system (x)
запустить x в подоболочке $ 1
и $ 2
относятся к первому и второму столбцам соответственно "mv" $ 1 "" $ 2
неявная конкатенация создает команду mappingFile.csv
, используйте этот входной файл В ksh93/zsh/bash/mksh/FreeBSD sh:
grep $'^4\tH' filein.in | tail -n 1
Или в любой оболочке:
awk '/^4\tH/ { line=$0; }; END { if(line!="") print line; }' filein.in
Вы также можете перевернуть строку входного файла, используя tac
, а затем получить первое совпадение
$ # add another \t after H if needed
$ tac ip.txt | grep -m1 $'^4\tH'
4 H 4
$ tac ip.txt | awk -F'\t' '$1=="4" && $2=="H"{print; exit}'
4 H 4