ファイルから特定の行を削除し、編集した行をファイルに追加しようとしています。最後の部分は正しいのですが、古い行を削除する 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
}
すぐに投稿できなかったことをお詫びします。貼り付けようとするたびに、エラーがあると言われました。
ファイルに 2 行のテキストを配置し、ステータスが 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