Вставьте значения во второй строке CSV-файла, относящиеся к первой строке в сценарии ksh - PullRequest
0 голосов
/ 29 августа 2018

Я пытаюсь вставить значения во второй ряд файла CSV. Во-первых, я вставляю заголовок в файл как:

echo 'FILE_TYPE,PERCENT_SPACE_USED,DB_NAME,THRESHOLD' > output.csv

Во-вторых, я хочу вставить значение под каждым столбцом. Первые два из которых у меня есть в текстовом файле (output.txt) и 3-й и 4-й в переменных.

awk -F"," -v DB="ABCDE",THRESH="75" 'BEGIN{OFS=","} NR>2{$1=$1+DB+THRESH} {print $0}NR!=1' output.txt > output.csv

Но что я получаю, так это то, что мой заголовок перезаписывается и выводится текстовый файл в 2 строки:

        ARCHIVED LOG        ,               .09                                                             
        ARCHIVED LOG        ,               .09  

Ниже показано, как выглядит мой входной файл (output.txt):

        ARCHIVED LOG        ,               .09  

Ответы [ 2 ]

0 голосов
/ 29 августа 2018

Вы также можете использовать sed для этой цели, чтобы вставить строку поверх файла, просто выполните:

sed -i.bak '1s/^/\"FILE_TYPE,PERCENT_SPACE_USED,DB_NAME,THRESHOLD\"\n/g' file

Это вставит строку поверх файла, определенного 1s, 2s вставит ее во вторую строку и т. Д.

0 голосов
/ 29 августа 2018

Если вы просто хотите добавить что-то вроде заголовка перед отображаемым выводом, то следующее может помочь вам, поэтому в awk есть раздел BEGIN, где мы могли бы что-то сделать перед прочтением файла ввода, например ->

awk 'BEGIN{print "FILE_TYPE,PERCENT_SPACE_USED,DB_NAME,THRESHOLD"} ...... your_code' Input_file
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...