Bash 修剪文本文件
我想修剪一个文本文件并删除从第n行到文件末尾的所有行。我试着用sed来做这个。n=26的sed命令应如下所示:Bash 修剪文本文件,bash,variables,sed,Bash,Variables,Sed,我想修剪一个文本文件并删除从第n行到文件末尾的所有行。我试着用sed来做这个。n=26的sed命令应如下所示: sed -i '26,$d' /path/to/textfile 所以在我的文本文件中,我事先不知道n,但我知道那一行中有一个唯一的文本。所以我试着这样做: myvar=`grep -n 'unique text' /path/to/textfile | awk -F":" '{print $1 }'` sed -i "${myvar}"',$d' /path/to/textfile
sed -i '26,$d' /path/to/textfile
所以在我的文本文件中,我事先不知道n,但我知道那一行中有一个唯一的文本。所以我试着这样做:
myvar=`grep -n 'unique text' /path/to/textfile | awk -F":" '{print $1 }'`
sed -i "${myvar}"',$d' /path/to/textfile
它可以工作并删除所有需要的行,但会抛出错误消息:
sed: -e expression # 1, character 1: unknown command: »,«
因此,我尝试将命令更改为:
myvar=`grep -n 'unique text' /path/to/textfile | awk -F":" '{print $1 }'`
sed -i "${myvar},$d" /path/to/textfile
这样我会得到相同的错误消息,但不会删除行。
我尝试了一些'和'的变体,以及如何将变量放入其中,但它从来没有按预期工作。有人知道我做错了什么吗
如果我能在bash脚本中使用其他方法修剪文本文件,我将不胜感激。您可以使用与起始行匹配的正则表达式替换固定行号
sed -i '/unique text/,$d' /path/to/textfile
您还可以使用ed
编辑文件,而不必依赖非标准的sed
扩展名
printf '/unique text/,$d\nwq\n' | ed /path/to/textfile
可以使用与起始行匹配的正则表达式替换固定行号
sed -i '/unique text/,$d' /path/to/textfile
您还可以使用ed
编辑文件,而不必依赖非标准的sed
扩展名
printf '/unique text/,$d\nwq\n' | ed /path/to/textfile
两个命令都有一个输入错误,$d不是d$…但它们工作正常。谢谢!超级更正;我一直想把它作为参数扩展来阅读,但我知道它不是,所以我显然键入了它,所以它不可能是一个:)两个命令都有一个输入错误,$d不是d$…但它们工作正常。谢谢!超级更正;我保持了当我知道它不是一个参数扩展时,我不想把它作为一个参数扩展来读,所以我显然键入了它,这样它就不会是一个:)