相关疑难解决方法(0)

使用另一个文件作为转换列表,用AWK替换fileds

awk在Windows中使用.我有一个叫做的脚本test.awk.此脚本应读取文件并使用值替换某个字段(键).key-> value列表位于一个名为的文件中translate.txt.

它的结构是这样的:

e;Emil    
f;Friedrich
g;Gustaf
h;Heinrich
i;Ida
Run Code Online (Sandbox Code Playgroud)

在一个简单的例子中,我的输入文件将是

e,111    
f,222
g,333
h,444
i,555
..
Run Code Online (Sandbox Code Playgroud)

所以输出应该是

Emil,111
Friedrich,222
Gustaf,333
Heinrich,444
Ida,555
..
Run Code Online (Sandbox Code Playgroud)

我所拥有的脚本正在使用用户函数key2value来进行替换,但是我没有成功地将此函数translate.txt作为源提供另一个文件.看我的代码:

{   
    FS=","
    d=key2value($1)
    print d "," $2
}

function key2value(b)
{
    #this should use another file, not the currently processed one
    FILENAME="translate.txt"  

begin
{
    FS=";"

    if ($1=b)
    { 
       return $2
    }

end 

}
Run Code Online (Sandbox Code Playgroud)

另一件事,FS是错误的,它只从第二行开始工作.

awk replace user-defined-functions

5
推荐指数
1
解决办法
2967
查看次数

unix shell:用字典替换

我有包含一些数据的文件,就像这样

2011-01-02 100100 1 
2011-01-02 100200 0
2011-01-02 100199 3
2011-01-02 100235 4
Run Code Online (Sandbox Code Playgroud)

并在单独的文件中有一些"字典"

100100 Event1
100200 Event2
100199 Event3
100235 Event4
Run Code Online (Sandbox Code Playgroud)

而且我知道

0 - warning
1 - error
2 - critical
etc...
Run Code Online (Sandbox Code Playgroud)

我需要SED/AWK/grep的或别的一些脚本,这有助于我收到这样的数据

100100 Event1 Error
100200 Event2 Warning
100199 Event3 Critical
etc
Run Code Online (Sandbox Code Playgroud)

我将非常感谢如何以最佳方式或工作实例来做到这一点

更新

有时我有这样的数据

2011-01-02 100100 1
2011-01-02 sometext 100200 0
2011-01-02 100199 3
2011-01-02 sometext 100235 4
Run Code Online (Sandbox Code Playgroud)

其中sometext =任何6个字符(也许这是有用的信息),
在这种情况下,我需要整个数据:

2011-01-02 sometext EventNameFromDictionary Error
Run Code Online (Sandbox Code Playgroud)

或没有"sometext"

shell awk grep sed

3
推荐指数
1
解决办法
1951
查看次数

标签 统计

awk ×2

grep ×1

replace ×1

sed ×1

shell ×1

user-defined-functions ×1