在sed中使用变量作为参数

时间:2015-03-30 14:13:03

标签: bash sed

我的文件超过150000行。使用sed我想抓住包含某个字符串的行。 我想将文件分成3个部分,并抓住每个部分中包含字符串的行。 现在我有这个:

linenumbertotal=$(wc -l < $filename)

echo -e ${linenumbertotal}

linenumberdivided=$((linenumbertotal / 3))

echo ${linenumberdivided}

first=$((linenumbertotal - linenumberdivided - linenumberdivided))
second=$((linenumbertotal - linenumberdivided))
third=$linenumbertotal

echo $first
echo $second
echo $third

这导致每个部分的行数正确。

现在我想做这样的事情:

sed '1,${first}d' $filename > first.tmp
grep 2003 first.tmp
sed '${first},${second}d' > second.tmp
grep 2004 second.tmp
sed -'${second},${third}d' > third.tmp
grep 2005 third.tmp

但是sed参数中的变量会导致错误。

我试过了:

sed "1,'${first}'!d" $filename

但它会导致sed:表达式#1,字符3:意外','

有些用户将此问题标记为另一个问题的副本,但我的问题不一样......我的问题是从文件中提取行,另一个问题是关于替换文本。

0 个答案:

没有答案