如何通过shell脚本从一个具有特定列文本的文件中删除其他文件中的行?

时间:2018-04-11 11:22:12

标签: bash shell unix

情况:我们在服务器上有两个不同路径的文件。一个文件,即文件A在拒绝文件夹中,另一个文件B在归档文件夹中。我们正在从拒绝文件夹中读取文件A并在文本后面拾取单词" ITEM:"然后在文件B中搜索它,如果找到它,那么我必须从具有该字的文件B中删除整行。

INPUT:

档案A:

hi my name is himansh agarwal.
My employee id is x56723
I live in Banaglore
I have an ITEM: WORDPRESS

文件B:

Hi My name is joseph.
i live in miami.
I dont go to office
I dont have an WORDPRESS.
i am very hungry.
I love to go out.

输出:

文件B应重命名为FILE B_1,其中的文本不应包含具有文本WORDPRESS的行。 文件B:

Hi My name is joseph.
i live in miami.
I dont go to office
i am very hungry.
I love to go out.

1 个答案:

答案 0 :(得分:0)

您可以使用awk选择文本:

 import android.os.Bundle;
    import android.support.v7.app.AppCompatActivity;
    import android.view.View;
    import android.widget.Toast;

    public class LoginActivity extends AppCompatActivity implements View.OnClickListener {
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.login_layout);

        // Button creation
        Button button=(Button)findviewbyId(R.id.button);

        // And set Clicking Event

           button.setOnClickListener(this);

        }
        @Override
        public void onClick(View view) {
            switch (view.getId()){
                case R.id.btnLogin:
                    Toast.makeText(this, "Login button clicked!", Toast.LENGTH_SHORT).show();
                    break;
                default:
                    break;
            }
        }
    }

您可以使用awk '$0 ~ /ITEM: / { sub(/^.*ITEM: /,"",$0); print $0; }' file_a

从文件中排除一行
grep -v

您可以使用命令替换将一个命令的结果作为参数提供给第二个命令:

grep -v WORDPRESS file_b

您可以将命令的结果输出到文件:

grep -v "$(echo WORDPRESS)" file_b

这给出了:

echo Test > file_b2

(这假设输出是文件B_1,而不是文件B.后者可以使用一些grep -v "$(awk '$0 ~ /ITEM: / { sub(/^.*ITEM: /,"",$0); print $0; }' file_a)" file_b > file_b_1 命令实现)

(你可以用文件名中的空格来做,然后到处都是文件名)