#windows #command-line #awk #command-line-arguments #gawk
#Windows #командная строка #awk #командная строка-аргументы #gawk
Вопрос:
У меня есть следующие строки в файле
lines="188"
lines="24"
lines="25"
и я извлекаю значения внутри кавычек («») и суммирую значения, чтобы получить 237, используя следующие команды
awk -F'"' '{count =$2;}END{if(count>0) print count;else print 0}'
Однако я хочу перенаправить вывод в текстовый файл. Я попытался использовать оператор операции перенаправления (>), но он продолжает выдавать мне ошибку
Это то, что у меня есть до сих пор
awk -F'"' '{count =$2;}END{if(count>0) print count;else print 0}' > "sum.txt"
И это ошибка
fatal: cannot open file '>' for reading (No such file or directory)
Комментарии:
1.
"I tried using the redirect operation (>) operator"
Покажите, что вы пробовали.2. вы указали имя файла?
Ответ №1:
Отредактировано — Похоже, существует проблема с обработкой кавычек в строке между awk и cmd. Чтобы использовать кавычки в качестве разделителя, измените его на
awk -F x22 "{count =$2}END{print count 0}" "input.txt" > "output.txt"
Комментарии:
1. я думаю, что это не сработает для него. Смотрите Комментарии op к моему ответу.
2. @AvinashRaj, вы правы. Я не видел конфликта в обработке кавычек. Исправлено
3. @MCND, после редактирования
x22
это сработало! Спасибо!4. @bacaviteno почему бы вам не указать значение FS внутри блока BEGIN?
Ответ №2:
Вы не указали путь к имени входного файла в своей команде. Ваша команда должна быть,
awk -F'"' '{count =$2;}END{if(count>0) print count;else print 0}' inputfile > "sum.txt"
А также вам не нужно экранировать значение FS "
внутри одинарных кавычек.
Комментарии:
1. Он по-прежнему выдает мне ошибку awk: cmd. строка: 1: (FILENAME=temp.txt FNR=3) фатальный: не удается открыть файл `>’ для чтения (такого файла или каталога нет)
2. awk -F'»‘ ‘{count =$2;}END{если (count> 0) вывести количество; иначе вывести 0}’ temp.txt > sum.txt
3. Как это показывает ` (FILENAME=temp.txt FNR=3) не удается открыть файл
>' for read ing (No such file or directory)
, но ваша фактическая команда отличается.4. ой, извините, это должно было быть temp.txt
5. выполняет ли temp.txt файл presnet в вашем текущем каталоге? Вы добавляли пробелы до и после
>
?
Ответ №3:
Вы можете немного сократить его:
awk -F" '{count =$2}END{print count 0}' file > sum.txt
Добавляя 0
, вы получаете то же, что и ваш тест, печатая 0
также, если count
пусто
Ответ №4:
Входной файл отсутствует.
awk -F'"' '{count =$2;}END{if(count>0) print count;else print 0}' inputfile > "sum.txt"
Кавычки для выходного файла не проблема.