我尝试在第一行插入文字
使用sed
的文件。我在sh
内执行此操作
脚本。
但为什么它会挂在sed执行线上?
#! /bin/sh
# Command to execute
# ./mybashcode.sh test.nbq
nbqfile=$1
nbqbase=$(basename $nbqfile nbq)
taglistfiletemp="${nbqbase}taglist_temp"
taglistfile="${nbqbase}taglist"
./myccode $nbqfile |
sort |
uniq -c |
awk '{print $2}' > $taglistfiletemp
noftags=$(wc -l $taglistfiletemp | awk '{print $1}')
echo $noftags
# We want to append output of noftags
# to the first line of taglistfile
sed '1i\
$noftags' > $taglistfile
# why it hangs here
# the content of taglistfile is NIL
答案 0 :(得分:6)
我不确定你要对sed
做什么,但它需要两个输入,脚本(通常是搜索/替换)和你想要执行它的数据上。如果您只指定一个,则假定它已获得正则表达式并等待stdin
上的数据。由于你没有在stdin
上提供任何内容,它会无限期地挂起。
此外,您还有“$noftags
”而不是“$noftags
”。先前将输出$noftags
,后者将输出变量的内容,因为单引号不允许变量扩展。
答案 1 :(得分:2)
我在这里弄错了吗? 或者,您要做的只是在另一个文件的开头插入一些文本?
# $NewInitialText
# $fileToInsertInto
echo $NewInitialText > temp.file.txt
cat $fileToInsertInto >> temp.file.txt
mv temp.file.txt $fileToInsertInto
这比sed
更容易吗? - Pun意图我猜。
答案 2 :(得分:2)
它挂起,因为您忘记为sed提供输入文件。
....
...
sed -i.bak "1i $noftags" $taglistfile
...