gpt4 book ai didi

awk - 用于交换列的 SED 表达式

转载 作者:行者123 更新时间:2023-12-04 10:28:58 25 4
gpt4 key购买 nike

我试图弄清楚如何使用 SED 表达式将 column1 与以 ':' 分隔的 column2 交换。

案例示例:

column1:column2
column1:column2
column1:column2

我想改成这样:
column2:column1
column2:column1
column2:column1

我尝试了以下方法,但它只是输出它而没有任何变化。
sed 's/\([^ ]*\)[ ][ ^C\([^ ]*\)/\2 \1/' test.txt > test1.txt

我将不胜感激。

最佳答案

第一种解决方案:请您尝试以下操作。在这里使用 OP 的反向引用尝试。

sed 's/\([^:]*\):\(.*\)/\2:\1/' Input_file

第二种解决方案:awk使用临时变量并交换两个字段的值。
awk 'BEGIN{FS=OFS=":"} {tmp=$1;$1=$2;$2=tmp} 1' Input_file

或者按照 Sundeep 的建议尝试简单地打印它们:
awk 'BEGIN{FS=OFS=":"} {print $2, $1}' Input_file

为什么 OP 的尝试不起作用: OP 使用反向引用功能的方法看起来不错,但在正则表达式中,OP 正在寻找不存在的匹配空间,因此我们需要提及 :根据 Input_file ,它应该可以通过一些调整来工作。

关于awk - 用于交换列的 SED 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60500869/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com