我正在为一个学校做一个项目,我的头撞过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"
答案 0 :(得分:1)
sed默认情况下将其结果输出到标准输出中。
如果您需要覆盖旧文件,请使用-i
(或更好的-i.bak
)将先前的文件版本保留在<filename>.bak
此外,如果仅在文件开头添加内容,请使用以下语法:
sed '1iYOUR_TEXT'
答案 1 :(得分:1)
使用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"