1

如果缺少字符串,我如何检查文件中的字符串自动添加例如输入

输入文件 test.txt

  1. 这是用于测试目的的测试文本
  2. 这是一个测试目的的测试
  3. 这是一个测试目的的测试
  4. 这是用于测试目的的测试文本

我想在所有行中添加“文本”

期望的输出

  1. 这是用于测试目的的测试文本
  2. 这是用于测试目的的测试文本
  3. 这是用于测试目的的测试文本
  4. 这是用于测试目的的测试文本

可能吗?提前谢谢了

大家好,谢谢大家的帮助,因为我的情况并不那么简单。我不知道哪一行会有所不同,并且在中间字符串中它不仅有一个字符串。我会给出一个更清楚的案例

输入文件 test.txt

  1. 组:IT_DEPT,VIP 角色:查看者部门:IT
  2. 组:IT_DEPT,VIP部门:IT
  3. 组:FINANCE LOAN VIEWER 角色:Viewer 部门:FINANCE
  4. 组:财务贷款查看部门:财务

所需的输出文件 test2.txt

  1. 组:IT_DEPT,VIP 角色:查看者部门:IT
  2. 组:IT_DEPT,VIP 角色:- 部门:IT
  3. 组:FINANCE LOAN VIEWER 角色:Viewer 部门:FINANCE
  4. 组:FINANCE LOAN VIEWER 角色:- 部门:财务

所以那些缺少“角色:”的人将被添加“角色:-”,希望这能澄清事情,再次提前感谢

4

3 回答 3

0

for your current example, this awk one-liner should work:

awk '$5!="text"{$5="text "$5}7' file

test:

kent$  cat f 
this is a test text for testing purpose
this is a test for testing purpose
this is a test for testing purpose
this is a test text for testing purpose

kent$  awk '$5!="text"{$5="text "$5}7' f
this is a test text for testing purpose
this is a test text for testing purpose
this is a test text for testing purpose
this is a test text for testing purpose
于 2013-11-10T23:00:27.337 回答
0

不是最干净的,但这可以满足您的要求:

#!/bin/bash

awk '{
    for(i = 1; i <= NF; i++) {
        if ($i == "test" && $(i + 1) != "text") {
            $i = "test text"
        }
    }
    print $0
}' input_file > output_file
于 2013-11-10T22:53:10.547 回答
0

如果您将问题形式化一点会有所帮助:尚不清楚确定“角色:”文本应该在哪里的标准是什么。然后实现将是在正则表达式替换中重新措辞的问题。例如,如果您想始终在第二个“:”之前拥有“角色”,那么您可以这样做:

perl -pe 's/^(.*?:.*?)(?:\sRole)?:/$1Role:/' test.txt

如果你想用'-'显示替换的位置,那么稍微复杂一点的表达式是:

perl -pe 's/^([^:]+:[^:]+)(?<!Role):/$1 Role: -/' 1.txt

输出:

Group: IT_DEPT,VIP Role: Viewer Dept: IT
Group: IT_DEPT,VIP Dept Role: - IT
Group: FINANCE LOAN VIEWER Role: Viewer Dept: FINANCE
Group: FINANCE LOAN VIEWER Dept Role: - FINANCE

这不是您的示例中的确切输出,但同样,您需要正式确定要添加“角色:-”的确切位置。我以第二个':'为例。

确切的输出可以通过更简单的代码来实现:

perl -pe 's/Dept:/Role: - Dept:/ unless /Role:/' 1.txt

输出:

Group: IT_DEPT,VIP Role: Viewer Dept: IT
Group: IT_DEPT,VIP Role: - Dept: IT
Group: FINANCE LOAN VIEWER Role: Viewer Dept: FINANCE
Group: FINANCE LOAN VIEWER Role: - Dept: FINANCE
于 2013-11-11T21:28:41.547 回答