我正在尝试从文件中删除特定行,然后将编辑后的行附加到文件中。我得到了最后一部分,但是我删除旧行的 sed 命令不起作用。
sed '/^$userinput/d' file1.txt > file2.txt
这最终将所有文件内容添加到新文件中。而不仅仅是我想要保留的线条。用户输入是我要删除的用户给出的行。这是我正在为课堂工作的一个 BASH 项目。我想通过删除它来完全从文件中删除它。
sed "/^${1}$/d" file > otherfile
这添加了所有想要和不需要的行
sed "/^$1/d" file > otherfile
创建空文件
这是我正在使用的声明。最后把它粘贴进去。
update(){
read -p "Enter the course number of the course you would like to update: " updateInput
grep $updateInput my_course.txt>update.txt
typeset -i status
typeset grade
if [ $? -eq 0 ]
then
read -p "Status: " status
while(true)
do
if [ $status -eq 0 ]
then
break
elif [ $status -eq 1 ]
then
break
else
printf "Enter either a 0 or 1\n"
fi
done
read -p "Grade: " grade
while(true)
do
if [ $status -eq 0 ]
then
break
elif [ $status -eq 1 ]
then
break
else
printf "Enter either a 0 or 1\n"
fi
done
read -p "Grade: " grade
while(true)
do
case $grade in
A)
break
;;
B)
break
;;
C)
break
;;
*)
read -p "Enter either an A, B, C: " grade
;;
esac
done
sed "/^$updateinput/d" my_course.txt>my_course1.txt
awk -F, '
/^CSC/{printf$1","$2","$3"," > "update1.txt"}' update.txt
printf $status","$grade >> update1.txt
cat my_course1.txt > my_course.txt
cat update1.txt >> my_course.txt
rm update.txt
rm update1.txt
fi
}
我很抱歉没有早点发布。每次我尝试粘贴它时都告诉我有错误。
在文件中放置两行文本并调用状态为 1 且等级为 A 的上述脚本后,这是输出
CSC3320,系统级编程,3,1,A
这本质上是更改文件的脚本。在函数的开头添加了一个 grep。
grep $updateInput my_course.txt>update.txt (This is at the beginning of the function. Everything else was at the bottom. )
sed "/^$updateinput/d" my_course.txt>my_course1.txt
awk -F, '
/^CSC/{printf$1","$2","$3"," > "update1.txt"}' update.txt
printf $status","$grade >> update1.txt
cat my_course1.txt > my_course.txt
cat update1.txt >> my_course.txt
rm update.txt
rm update1.txt