我正在尝试在一行输入中对未知数量的字段进行排序:
输入:
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}'但似乎它会在两个以上的领域变得混乱。有什么帮助吗?
我们的输入看起来像
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)
基本上删除括号内的任何重复字符串。有什么建议?
我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被替换)。