У меня есть файл FILE1.TXT
. Он содержит только одно имя файла FILE2.TXT
.Количество строк в UNIX, читая имя файла из другого файла
Как я могу найти количество записей/количество строк FILE2.TXT
, используя только FILE1.TXT
? Что я уже пробовал:
cat FILE1.TXT | wc -l
Но вышеприведенная команда не работает.
На самом деле, мне нужно, чтобы отобразить результат, как показано ниже:
File name is FILE2.TXT and the count is 2.
То, что я уже пробовал это (используя формулировку ниже в файле сценария):
echo "File name is "`cat FILE1.TXT`" and the count is " `wc -l < $(cat FILE1.TXT)`
Но вышеуказанная команда не работала и дала ошибку
syntax error at line 1: `(' unexpected
Вам необходимо [Подстановка команд] (http://www.gnu.org/software/ bash/manual/bash.html # Command-Substitution), и вам не нужно 'cat'. –
Возможный дубликат [Цитирование по содержимому файла в Bash?] (Http://stackoverflow.com/questions/1521462/looping-through-the-content-of-a-file-in-bash) – tripleee
Ваши измененные команда работала для меня (используя Bash 3.2 в Mac OS X 10.10.2 Yosemite). Какую оболочку вы используете? Если вы не используете архаичную оболочку (например, '/ bin/sh' для Solaris), она должна работать. Возможно, было бы лучше написать: 'echo 'Имя файла - $ (cat FILE1.TXT), а count - $ (wc -l <$ (cat FILE1.TXT))', где легкость вложенности является одним из достоинств из '$ (...)' обратных котировок. Выход из 'wc' вне двойных кавычек означает, что лишнее свободное пространство на выходе' wc' разделяется 'echo'. –