小编Chr*_*ris的帖子

内联字段排序

我正在尝试在一行输入中对未知数量的字段进行排序:

输入:

ab bc
bc ab
cd ef bc 
bc cd ef
cd bc ab
ef ab bc cd gh
Run Code Online (Sandbox Code Playgroud)

输出:

ab bc
ab bc
bc cd ef
bc cd ef
ab cb cd
ab bc cd ef gh
Run Code Online (Sandbox Code Playgroud)

我一直在使用类似的东西,awk '{if($2 < $1) print $2,$1;else print}'但似乎它会在两个以上的领域变得混乱。有什么帮助吗?

awk text-processing sort

10
推荐指数
2
解决办法
3320
查看次数

内联删除括号之间的重复单词

我们的输入看起来像

2012-04-17  [GBPGBP]
2012-04-13  [GBP GBP]
2012-04-13  [GBP]
2012-04-11  [GBPGBP]
2012-04-11  [GBP GBP]
2012-04-10  [GBPGBP]
2012-04-06  [GBP GBP GBP]
2012-04-17  [GBPGBP]
2012-04-13  [GBP CDN]
2012-04-13  [GBP]
2012-04-11  [GBPCDN]
2012-04-11  [GBP DL DL]
2012-04-10  [PSGBP]
2012-04-06  [PS PS]
Run Code Online (Sandbox Code Playgroud)

我们希望得到这样的输出

2012-04-17  [GBP]
2012-04-13  [GBP]
2012-04-13  [GBP]
2012-04-11  [GBP]
2012-04-11  [GBP]
2012-04-10  [GBP]
2012-04-06  [GBP]
2012-04-17  [GBP]
2012-04-13  [GBP CDN]
2012-04-13  [GBP]
2012-04-11  [GBPCDN]
2012-04-11  [GBP DL]
2012-04-10  [PSGBP]
2012-04-06  [PS]
Run Code Online (Sandbox Code Playgroud)

基本上删除括号内的任何重复字符串。有什么建议?

shell text-processing regular-expression

2
推荐指数
1
解决办法
308
查看次数

替换括号之间的文本

awk '{ gsub(/BAR|WIBBLE/, "FOO"); print }'用来替换数据中的文本,如:

SOMETHING [BAR, WIBBLE]
SOMETHING [BAR]
Run Code Online (Sandbox Code Playgroud)

这给出了所需的结果:

SOMETHING [FOO, FOO]
SOMETHING [FOO]
Run Code Online (Sandbox Code Playgroud)

但是现在我不得不更新需要替换的文本,如下所示:

awk '{ gsub(/BAR|WIBBLE|ME/, "FOO"); print }'
Run Code Online (Sandbox Code Playgroud)

这将文本变成:

SOMETHING [ME, WIBBLE]
Run Code Online (Sandbox Code Playgroud)

进入:

SOFOOTHING [FOO, FOO]
Run Code Online (Sandbox Code Playgroud)

如何将我的替换限制为括号之间的文本(即SOMETHING单独保留)?

编辑

我还需要任何文本的稳健性SOMETHING(例如SHE GAVE ME THAT不应该ME被替换)。

sed awk text-processing regular-expression replace

2
推荐指数
1
解决办法
4373
查看次数

标签 统计

text-processing ×3

awk ×2

regular-expression ×2

replace ×1

sed ×1

shell ×1

sort ×1