POSIX read
не имеет -p
, это не -расширение POSIX, реализованное в некоторых оболочках (, таких как bash ). В настоящее время вы используете /bin/sh
, который, вероятно, является совместимой с POSIX -оболочкой с ограниченными расширениями, если вы хотите использовать расширения bash, вам следует вместо этого рассмотреть возможность использования /bin/bash
.
Вместо этого вы можете сделать это с помощью POSIX:
printf 'Press Enter to continue'
read REPLY
Попробуйте это,
awk -F ',' 'FNR==NR {a[$1]; next} $2 in a{print $2", "$8}' file1 file2 | sed 's/,.*\\/, /g'
123, ddd
124, uuu
221, vvv
333, xxx
-F '[\\\\,]'
нам требуются два разделителя в соответствии с вашими ожидаемыми выводами (запятая и обратная косая черта ). чтобы избежать поведения обратной косой черты, нам потребовалось 4 обратной косой черты. Попробуйте также
awk -F ',' '
FNR == NR {T[$1]
next
}
$2 in T {n = split ($8, X, /\\/)
print $2, X[n]
}
' OFS=, file1 file2
123,ddd
124,uuu
221,vvv
333,xxx
Адаптируйте номера полей по вкусу (например.$8
-->$55
). Если это не удовлетворяет ваш запрос, сузьте/улучшите свою спецификацию и образцы данных.