Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.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_Unix - Fatal编程技术网

如何在bash中从文件中删除一行?

如何在bash中从文件中删除一行?,bash,unix,Bash,Unix,我有一个名为tmp的文件,其中包含4个字符串: dirs f1 f2 f3 我想和你在一起 f1 f2 f3 什么bash命令可以帮助我实现这一点?(请只使用bash,不使用sed或awk。)您可以使用: grep -v "dirs" tmp grep的-v参数将否定匹配,即它将从文件tmp中排除任何匹配的dirs 或者,如果您想要纯bash解决方案: while read -r line do if ! [[ $line =~ "dirs" ]] then echo $l

我有一个名为
tmp
的文件,其中包含4个字符串:

dirs
f1
f2
f3
我想和你在一起

f1
f2
f3
什么bash命令可以帮助我实现这一点?(请只使用bash,不使用sed或awk。)

您可以使用:

grep -v "dirs" tmp
grep
-v
参数将否定匹配,即它将从文件
tmp
中排除任何匹配的
dirs

或者,如果您想要纯
bash
解决方案:

while read -r line
do
  if ! [[ $line =~ "dirs" ]]
  then
    echo $line
  fi
done < tmp
读取时-r行
做
如果![$line=~“dirs”]]
然后
回音$线
fi
完成
您可以使用:

grep -v "dirs" tmp
grep
-v
参数将否定匹配,即它将从文件
tmp
中排除任何匹配的
dirs

或者,如果您想要纯
bash
解决方案:

while read -r line
do
  if ! [[ $line =~ "dirs" ]]
  then
    echo $line
  fi
done < tmp
读取时-r行
做
如果![$line=~“dirs”]]
然后
回音$线
fi
完成
您可以使用:

grep -v "dirs" tmp
grep
-v
参数将否定匹配,即它将从文件
tmp
中排除任何匹配的
dirs

或者,如果您想要纯
bash
解决方案:

while read -r line
do
  if ! [[ $line =~ "dirs" ]]
  then
    echo $line
  fi
done < tmp
读取时-r行
做
如果![$line=~“dirs”]]
然后
回音$线
fi
完成
您可以使用:

grep -v "dirs" tmp
grep
-v
参数将否定匹配,即它将从文件
tmp
中排除任何匹配的
dirs

或者,如果您想要纯
bash
解决方案:

while read -r line
do
  if ! [[ $line =~ "dirs" ]]
  then
    echo $line
  fi
done < tmp
读取时-r行
做
如果![$line=~“dirs”]]
然后
回音$线
fi
完成
使用tail是许多方法之一:

许多方法之一是使用tail:

许多方法之一是使用tail:

许多方法之一是使用tail:


带grep的正则表达式:或

grep'f'tmp>输出文件的名称

grep'[^“dirs”]'tmp>输出文件的名称


为我工作

使用grep的正则表达式:或者

grep'f'tmp>输出文件的名称

grep'[^“dirs”]'tmp>输出文件的名称


为我工作

使用grep的正则表达式:或者

grep'f'tmp>输出文件的名称

grep'[^“dirs”]'tmp>输出文件的名称


为我工作

使用grep的正则表达式:或者

grep'f'tmp>输出文件的名称

grep'[^“dirs”]'tmp>输出文件的名称




为我工作

逐行阅读,如果需要,排除一行;否则,写一个临时文件,最后用它替换原来的文件。你能给我举个例子吗@蓝月亮。需要更多的细节。为什么sed/awk被排除在外?根据您实际要排除的内容-是基于行号还是行内容?逐行阅读,如果需要,排除一行;否则,写一个临时文件,最后用它替换原来的文件。你能给我举个例子吗@蓝月亮。需要更多的细节。为什么sed/awk被排除在外?根据您实际要排除的内容-是基于行号还是行内容?逐行阅读,如果需要,排除一行;否则,写一个临时文件,最后用它替换原来的文件。你能给我举个例子吗@蓝月亮。需要更多的细节。为什么sed/awk被排除在外?根据您实际要排除的内容-是基于行号还是行内容?逐行阅读,如果需要,排除一行;否则,写一个临时文件,最后用它替换原来的文件。你能给我举个例子吗@蓝月亮。需要更多的细节。为什么sed/awk被排除在外?根据您实际要排除的内容-它是基于行号还是行内容?如果不允许使用
sed
awk
,我不确定为什么
grep
可以?为什么要麻烦使用正则表达式来匹配文本字符串?看起来很浪费。@kojiro纯粹是因为我是在模仿grep命令bash@arco444好吧,不是为了说明这一点,但是
grep本身将使用BRE,但是
=~
将使用ERE,因此您在模拟
egrep
时可能只需要
fgrep
。如果
sed
awk
被禁止,我不确定为什么
grep
可以?为什么要麻烦用正则表达式来匹配文本字符串?看起来很浪费。@kojiro纯粹是因为我是在模仿grep命令bash@arco444好吧,不是为了说明这一点,但是
grep本身将使用BRE,但是
=~
将使用ERE,因此您在模拟
egrep
时可能只需要
fgrep
。如果
sed
awk
被禁止,我不确定为什么
grep
可以?为什么要麻烦用正则表达式来匹配文本字符串?看起来很浪费。@kojiro纯粹是因为我是在模仿grep命令bash@arco444好吧,不是为了说明这一点,但是
grep本身将使用BRE,但是
=~
将使用ERE,因此您在模拟
egrep
时可能只需要
fgrep
。如果
sed
awk
被禁止,我不确定为什么
grep
可以?为什么要麻烦用正则表达式来匹配文本字符串?看起来很浪费。@kojiro纯粹是因为我是在模仿grep命令bash@arco444好吧,不是为了说明这一点,但是
grep本身将使用BRE,但是
=~
将使用ERE,因此,当您可能只需要
fgrep
时,您正在模拟
egrep
。是的,我想到了这一点,但我知道我将有多少行。我给出了一个4行的示例,但可能是5行,但我能告诉你的是,我知道我不想要的那一行永远是第一行是的,我想到了这一点,但我知道我会有多少行我举了一个例子,其中有4行,但可能是5行,但我能做的是