САС не добавляет первую строку в файл .csv - PullRequest
0 голосов
/ 01 марта 2019

Я делаю проект для школы, и моя голова прошла через 3 стены, сколько раз я его разбил.Проект состоит в том, чтобы задать имя и цвет и назначить их каждой переменной, а затем создать каталог из переменной цвета в каталоге / tmp.создайте файл .csv с заголовком, извлеките информацию из заданного файла .txt из списка и добавьте только выбранные столбцы.Я дошел до точки добавления столбцов, но независимо от того, что я делаю, я не могу получить sed для добавления заголовка или импорта информации из файла .txt.

, как вы можете видеть, я пробовал несколько способовизмените файл, но я пока не знаю достаточно, чтобы он работал

формат входного файла следующий:

1. 734-44-2041 James SMITH jsmith@beltec.us 360-555-4778 360-555-0158

и он должен выглядеть как

james,smith,james.smith@beltec.us,734-44-2041-000

IЯ предполагаю, что 3 запятые должны быть 0 в конце

это код, который у меня есть

#!/bin/bash
#interactive=

#variables 
color=/tmp/$color
csvfile=/tmp/blue/midterm.csv

if [ "$1" == "" ]; then
echo "you should use the -c or -C flags
exit
fi

#adding the -c flag and setting the filename variable 
while [ "$1" != "" ]; do 
case $1 in
-c | -C )   shift
        filename=$1
        ;;

* )     echo "you should use the -c flag"
        exit 1
esac
shift
done

#get user's name
echo "what is your name"
read user_name

#get fav color from user
echo "what is your favorate color"
read color

#make the fov color directory
if [ ! -f /tmp/$color ]; then
mkdir /tmp/$color
else
echo "bad luck $user_name"
exit 1
fi

#cd into the directory
cd /tmp/$color

#make a csv file in /temp/$color
touch midterm.csv

akw '
BEGIN { FS=OFS=","; print "Firstname","lastname","Maildomain","Password" }
{ print $2,$3,$4,$1 }
' "$filename" > "/tmp/$color/midterm.csv"

Ответы [ 2 ]

0 голосов
/ 01 марта 2019

Вам никогда не понадобится sed, когда вы используете awk.Все, что вам нужно для создания заголовка + контент:

awk '
    BEGIN { FS=OFS=","; print "Firstname", "Lastname", "Maildomain", "Password" }
    { print $3, $4, $5, $2 }
' "$filename" > "/tmp/$color/midterm.csv"

Или, если ваш входной файл не является CSV, как кажется, это не ваш обновленный вопрос:

awk '
    BEGIN { OFS=","; print "Firstname", "Lastname", "Maildomain", "Password" }
    { print $3, $4, $5, $2 }
' "$filename" > "/tmp/$color/midterm.csv"
0 голосов
/ 01 марта 2019

sed по умолчанию выводит свои результаты на стандартный вывод.

Если вам нужно перезаписать старый файл, используйте -i (или лучше -i.bak), чтобы сохранить предыдущую версию файла в <filename>.bak

Более того, если вам нужно что-то добавить только в начале файла, используйте следующий синтаксис:

sed '1iYOUR_TEXT'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...