Перенаправить результат awk в текстовый файл

#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"
 

Кавычки для выходного файла не проблема.