繁体   English   中英

SED未将第一行添加到.csv文件

[英]SED not adding a first line to .csv file

我正在为一个学校做一个项目,我的头撞过3堵墙,摔了多少遍。 该项目将询问名称和颜色,并将其分别分配给变量,然后从/ tmp目录中的color变量创建目录。 创建带有标题的.csv文件,从给定的.txt文件中无序提取信息,并仅添加选择列。 我已经到了添加列的地步,但是无论我做什么,我都无法添加标题或从.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

我假设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"

sed默认情况下将其结果输出到标准输出中。

如果您需要覆盖旧文件,请使用-i (或更好的-i.bak )将以前的文件版本保留在<filename>.bak

此外,如果仅在文件的开头添加一些内容,请使用以下语法:

sed '1iYOUR_TEXT'

使用awk时,您永远不需要sed。 创建标头+内容所需要做的就是:

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"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM