首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用Awk替换FS并将FS保存到OFS

用Awk替换FS并将FS保存到OFS
EN

Stack Overflow用户
提问于 2017-01-30 12:49:39
回答 4查看 215关注 0票数 0

下面有一个输入文本的文件(这不是原始文件,只是输入文本的示例),我想将所有的2个字母字符串替换为数字100。在这个文件FS中,除了将它们都视为FS之外,我别无选择:、\\或“”(空格),我希望将这些字段分隔符保留在输出中的原始位置(如在输入文件中)。

代码语言:javascript
复制
A:B C|D
AA:C EE G
BB|FF XX1 H
DD:MM:YY K

我试过了

代码语言:javascript
复制
awk  -F"[:| ]"  '{gsub(/[A-Z]{2}/,"100");print}'

但这似乎不起作用,请建议。

期望产出:

代码语言:javascript
复制
A:B C|D
100:C 1000 G
100|100 1001 H
100:100:100 K
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-01-30 15:18:28

POSIX awk中没有保留与RS (POSIX)定义的字符串或FS定义的regexp匹配的字符串的功能。因为在POSIX RS中只是一个字符串,所以不需要这样的功能,而且对于每个FS匹配字符串来说,这样做是不必要的,因为很少需要它。

在GNU awk中,RS可以是regexp,而不仅仅是字符串,您可以保留与RT匹配regexp RS的字符串,但是没有任何功能保留与FS匹配的值,因为POSIX没有这样做。相反,在GNU中,他们添加了一个第4 arg来拆分(),这样如果您想要的话,可以自己在数组中保留与FS匹配的字符串(seps[] ):

代码语言:javascript
复制
$ awk -v FS='[:| ]' '{
    split($0,flds,FS,seps)
    gsub(/[A-Z]{2}/,"100")
    for (i=1;i<=NF;i++) {
        printf "%s%s", $i, seps[i]
    }
    print ""
}' file
A:B C|D
100:C 100 G
100|100 1001 H
100:100:100 K

split()中查找GNU awk手册中的更多信息。

票数 3
EN

Stack Overflow用户

发布于 2017-01-30 13:07:50

在这种情况下

代码语言:javascript
复制
sed 's/[A-Z]\{2\}/100/g' YourFile
awk '{gsub(/[A-Z]{2}/, "100"); print}' YourFile

在这种情况下不需要字段分隔,请用"100“更改所有上标字母组,除非在OP中指定其他约束(就像字符串中的其他元素一样,您需要指定可能和理想的内容,添加期望结果的示例为univoq)。

现在您肯定还有更多的事情要做,所以这段代码肯定会失败,因为使用ABC:DEF100C:100F这样的代码是不可能的。

在这种情况下

代码语言:javascript
复制
awk -F '[[:blank:]:|]+' '
   {
   split( $0, aS, /[^[:blank:]:|]+/)
   for( i=1;i<=NF;i++){
      if( $i ~ /^[A-Z][A-Z]$/) $i = "100"
      printf( "%s%s", $i, aS[i+1])
      }
   printf( "\n" )
   } ' YourFile
票数 1
EN

Stack Overflow用户

发布于 2017-01-30 13:08:12

试一试:

代码语言:javascript
复制
kent$  sed -r 's/(^|[:| ])[A-Z][A-Z]([:| ]|$)/\1100\2/g' file  
A:B C|D
100:C 100 G
100|FF XX1 H
100:MM:100 K

注意:

这将搜索和替换模式:在两个分隔符之间精确地设置了两个and。如果这不是您想要的,那么粘贴所需的输出。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41936382

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档