如何根据某些条件使用shell脚本从文本文件中删除几行数据
我有一个超过10万行的文本文件。下面提到的数据是我拥有的文本文件的一个示例。我想在此数据上使用一些条件并删除一些行。文本文件没有标题(ID、名称、代码1、代码2、代码3)。我提过供参考。如何使用shell脚本实现这一点 输入测试文件:如何根据某些条件使用shell脚本从文本文件中删除几行数据,shell,unix,scripting,sh,Shell,Unix,Scripting,Sh,我有一个超过10万行的文本文件。下面提到的数据是我拥有的文本文件的一个示例。我想在此数据上使用一些条件并删除一些行。文本文件没有标题(ID、名称、代码1、代码2、代码3)。我提过供参考。如何使用shell脚本实现这一点 输入测试文件: | ID | NAME | Code-1 | code-2 | code-3 | | $$ | 5HF | 1E | N | Y | | $$ | 2MU | 3C | N | Y | | $$ | 32E | 3C | N | N | | AB | 3C
| ID | NAME | Code-1 | code-2 | code-3 |
| $$ | 5HF | 1E | N | Y |
| $$ | 2MU | 3C | N | Y |
| $$ | 32E | 3C | N | N |
| AB | 3CH | 3C | N | N |
| MK | A1M | AS | P | N |
| $$ | Y01 | 01 | F | Y |
| $$ | BG0 | 0G | F | N |
条件:
| ID | NAME | Code-1 | code-2 | code-3 |
| $$ | 5HF | 1E | N | Y |
| $$ | 2MU | 3C | N | Y |
| AB | 3CH | 3C | N | N |
| MK | A1M | AS | P | N |
| $$ | Y01 | 01 | F | Y |
鼓励你在提问时展示自己的努力。但我明白,如果你是Bash新手,这个问题可能会很复杂。下面是我使用awk的解决方案。花了0.545秒在我的电脑上处理了137k行(规格适中) 注意,它有一些限制: a) 它用空格而不是
|
来分隔值。它将适用于您的精确输入格式,但不适用于没有额外空格的输入行,例如
|$$|32E|3C|N|N|
|AB|3CH|3C|N|N|
| $$ | 32E FOO | 3C | N | N |
| AB | 3CH BBT | 3C | N | N |
b) 出于同样的原因,如果col值有额外的空格,例如
|$$|32E|3C|N|N|
|AB|3CH|3C|N|N|
| $$ | 32E FOO | 3C | N | N |
| AB | 3CH BBT | 3C | N | N |
欢迎使用SO,请在您的问题中以代码的形式添加您的努力,这是非常受鼓励的,谢谢。@sunanda p-如果文本文件没有标题,请不要通过将其插入预格式化块来误导读者。接受任何ID和(仅当code-3='Y'时接受ID='$$')是矛盾的。我的意思是接受所有其他ID和(仅当code-3='Y'时接受ID='$$')检查条件后,此代码是否会删除不需要的行?我只想知道为什么我们使用print代码打印需要的行,而不是删除不需要的行。