我对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"
和:
"Le rȿgle CA1 a ignorȨ ou a dȨsactivȨ la ligne"
必须忽略文件的第一行,并且必须在另一个文件中重定向不带上述行的文件结果...
我只是不知道怎么做。可能是因为特殊字符。
任何帮助将不胜感激。非常感谢提前!
答案 0 :(得分:1)
将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
答案 1 :(得分:0)
似乎awk提供了最方便的解决方案。试试这个:
awk '(NR!=1) && ($0!="line1") && ($0!="line2") { print }' file > outputFile
其中 line1 和 line2 是您要跳过的行。用实际值替换它们。 (NR!= 1)条件阻塞第一行。
编辑:以上代码禁止第1行和匹配第1行和第1行的行2号线。如果你想忽略比较的第一行(即打印它甚至匹配line1或line2),你必须这样做:
awk '{if(NR==1) print; else if ($0!="line1" && $0!="line2") print }' file > output
答案 2 :(得分:0)
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