Shell脚本问题-从文件中删除行

Shell脚本问题-从文件中删除行,shell,Shell,我对shell脚本是完全陌生的,我对我必须做的事情有一个“小”问题 我有一个包含以下行的文件: LineNumber;Log 2;Ligne ignorȨe : Collaborateur PABC842 inactif et non prȨsent dans Machine 2;La valeur (CDD) dans la colonne [Type_contrat] n'est pas dans le liste (FON|CDP|CDI|CDII). Le rÈ¿gle CA1 a

我对shell脚本是完全陌生的,我对我必须做的事情有一个“小”问题

我有一个包含以下行的文件:

LineNumber;Log
2;Ligne ignorȨe : Collaborateur PABC842 inactif et non prȨsent dans Machine
2;La valeur (CDD) dans la colonne [Type_contrat] n'est pas dans le liste (FON|CDP|CDI|CDII). Le rȿgle CA1 a ignorȨ ou a dȨsactivȨ la ligne pour le collaborateur PABC842
我必须从此文件中删除具有以下值的行:

"inactif et non prȨsent dans Machine"
以及:

必须忽略文件的第一行,并且不包含上述行的文件的结果必须重定向到另一个文件中

我只是不知道该怎么做。可能是因为特殊的字符


任何帮助都将不胜感激。提前多谢

将grep与-v选项一起使用

% grep -v "Le rȿgle CA1 a ignorȨ ou a dȨsactivȨ la ligne\|inactif et non prȨsent dans Machine" test.txt

LineNumber;Log

似乎awk提供了最方便的解决方案。试试这个:

awk '(NR!=1) && ($0!="line1") && ($0!="line2") { print }' file > outputFile
其中,第1行和第2行是要跳过的行。用实际值替换它们。 (NR!=1)条件阻塞第一行

编辑:以上代码抑制第1行和与第1行和第2行匹配的行。如果要忽略比较中的第1行(即,即使它与第1行或第2行匹配也要打印),则必须执行以下操作:

 awk '{if(NR==1) print; else if ($0!="line1" && $0!="line2")  print }' file > output  

sed
对于这样的工作是一个很好的工具:

sed '1d;/inactif et non prȨsent dans Machine/d;/Le rȿgle CA1 a ignorȨ ou a dȨsactivȨ la ligne/d;' file > otherfile

你能用英语把编码部分贴出来吗?@PraveenVinny:你能把英文单词“you”拼写正确吗?请注意,OP使用的法语与问题完全无关?
sed '1d;/inactif et non prȨsent dans Machine/d;/Le rȿgle CA1 a ignorȨ ou a dȨsactivȨ la ligne/d;' file > otherfile