Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 修剪文本文件_Bash_Variables_Sed - Fatal编程技术网

Bash 修剪文本文件

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

我想修剪一个文本文件并删除从第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: -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$…但它们工作正常。谢谢!超级更正;我保持了当我知道它不是一个参数扩展时,我不想把它作为一个参数扩展来读,所以我显然键入了它,这样它就不会是一个:)