Terminal 从特定文件获取值并在终端中显示交换的值
我有一个名为Terminal 从特定文件获取值并在终端中显示交换的值,terminal,grep,command-line-interface,fetch,Terminal,Grep,Command Line Interface,Fetch,我有一个名为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,它提供了
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
,但没有得到所需的输出
您可以使用以下
sed
或awk
解决方案之一:
grep 'ADCET$' input.txt | sed 's/^\([^|]*\)\(|.*|\)\([^|]*\)$/\3\2\1/'
grep 'ADCET$' input.txt | awk 'BEGIN {OFS=FS="|"} {temp=$NF;$NF=$1;$1=temp;}1'
见
awk
详细信息
-字段分隔符设置为BEGIN{OFS=FS=“|”}
,相同的字符将用于输出|
:{temp=$NF;$NF=$1;$1=temp;}1
temp=$NF代码>-最后一个字段值分配给
变量temp
$NF=$1代码>-最后一个字段设置为字段1值
$1=温度代码>-字段1的值设置为
temp
-使1
写入输出awk
sed
详细信息
-行首^
-捕获组1:除\([^ |]*\)
\
-捕获组2:\(|.*124;\)
,然后是任何0+字符,然后是一个
|`\([^ |]*\)-捕获组3:除
-行结束$
\3\2\1
是组1、2和3中捕获的值的占位符。可能会看到:对于反转逗号分隔值的函数(可以通过regexp自定义分隔符)。@WiktorStribiżewgrep'ADCET$'input.txt | tac
垂直交换它。这不是预期的输出。@dth input.txt文件包含
分隔值,而不是,
分隔值。|sed's/^\([^ |]*\)\([^.]*\)\([^ |]*\)$/\3\2\1/'
?@WiktorStribiż。你能详细解释一下吗?这样我就可以把它标为正确答案了。