gpt4 book ai didi

terminal - 从特定文件中获取值并在终端中显示交换值

转载 作者:行者123 更新时间:2023-12-05 06:27:58 25 4
gpt4 key购买 nike

我有一个名为 input.txt 的文件,其中包含 StudentName|Class|SchoolName 格式的学生数据。

Shriii|Fourth|ADCET
Chaitraliii|Fourth|ADCET
Shubhangi|Fourth|ADCET
Prathamesh|Third|RIT

我想以相反的顺序显示特定大学的这些值。示例:

ADCET|Fourth|Shriii
ADCET|Fourth|Chaitraliii

我使用 grep 'ADCET$' input.txt 给出输出

Shriii|Fourth|ADCET
Chaitraliii|Fourth|ADCET

但我想要它的顺序相反。我还使用了 grep 'ADCET$' input.txt | sort -r 但没有得到所需的输出

Ref1

最佳答案

您可以使用以下任一 sedawk 解决方案:

grep 'ADCET$' input.txt | sed 's/^\([^|]*\)\(|.*|\)\([^|]*\)$/\3\2\1/'
grep 'ADCET$' input.txt | awk 'BEGIN {OFS=FS="|"} {temp=$NF;$NF=$1;$1=temp;}1'

参见 online demo

awk 详细信息

  • BEGIN {OFS=FS="|"} - 字段分隔符设置为 | 并且相同的字符将用于输出
  • {temp=$NF;$NF=$1;$1=temp;}1:
    • temp=$NF; - 将最后一个字段值分配给 temp 变量
    • $NF=$1; - 最后一个字段设置为字段 1 的值
    • $1=temp; - 字段 1 的值设置为 temp
  • 1 - 让 awk 写入输出。

sed 详细信息

  • ^ - 行首
  • \([^|]*\) - 捕获第 1 组:|
  • 以外的任何 0+ 个字符
  • \(|.*|\) - 捕获第 2 组:|,然后是任何 0+ 个字符,然后是 |
  • \([^|]*\) - 捕获第 3 组:除 |` 之外的任何 0+ 个字符
  • $ - 行尾。

\3\2\1 是捕获到组 1、2 和 3 中的值的占位符。

关于terminal - 从特定文件中获取值并在终端中显示交换值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54803930/

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