Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
重排输出Bash_Bash_Shell_Filter_Output - Fatal编程技术网

重排输出Bash

重排输出Bash,bash,shell,filter,output,Bash,Shell,Filter,Output,我有这样的输出 00:00.0 0600: 8086:2e20 (rev 03) 00:01.0 0604: 8086:2e21 (rev 03) 00:03.0 0780: 8086:2e24 (rev 03) 00:19.0 0200: 8086:10ce 00:1a.0 0c03: 8086:3a37 00:1a.1 0c03: 8086:3a38 00:1a.2 0c03: 8086:3a39 00:1a.7 0c03: 8086:3a3c 00:1b.0 0403: 8086:3a3e

我有这样的输出

00:00.0 0600: 8086:2e20 (rev 03)
00:01.0 0604: 8086:2e21 (rev 03)
00:03.0 0780: 8086:2e24 (rev 03)
00:19.0 0200: 8086:10ce
00:1a.0 0c03: 8086:3a37
00:1a.1 0c03: 8086:3a38
00:1a.2 0c03: 8086:3a39
00:1a.7 0c03: 8086:3a3c
00:1b.0 0403: 8086:3a3e
00:1c.0 0604: 8086:3a40
00:1c.2 0604: 8086:3a44
00:1c.3 0604: 8086:3a46
00:1d.0 0c03: 8086:3a34
00:1d.1 0c03: 8086:3a35
00:1d.2 0c03: 8086:3a36
00:1d.7 0c03: 8086:3a3a
00:1e.0 0604: 8086:244e (rev 90)
00:1f.0 0601: 8086:3a18
00:1f.2 0106: 8086:3a22
00:1f.3 0c05: 8086:3a30
01:00.0 0300: 10de:0640 (rev a1)
03:00.0 0101: 11ab:6101 (rev c0)
我需要得到每行的输出,如下所示:

610111ab <-- Last Line
064010de <-- Line Before Last One
610111ab这可能会有所帮助

echo "03:00.0 0101: 11ab:6101 (rev c0)" | gawk 'BEGIN{FS="("}; { print $1 }' | gawk 'BEGIN{FS=":"; OFS="" };{ print $4,$3 }' | tr -d ' '
这可能会有所帮助

echo "03:00.0 0101: 11ab:6101 (rev c0)" | gawk 'BEGIN{FS="("}; { print $1 }' | gawk 'BEGIN{FS=":"; OFS="" };{ print $4,$3 }' | tr -d ' '
我也被你要求的每一行的输出弄糊涂了。如果您希望以相反的顺序执行,请将
sed
输出导入
tac

我也被你要求的每一行的输出弄糊涂了。如果您希望按相反顺序进行,请将
sed
输出导入
tac

Awk解决方案:

awk -F':| ' '{print $6$5}' output
Awk解决方案:

awk -F':| ' '{print $6$5}' output
纯溶液:

re="([0-9a-f]{4}):([0-9a-f]{4})" cat output.txt | while read l ; do [[ $l =~ $re ]] && echo ${BASH_REMATCH[2]}${BASH_REMATCH[1]}; done re=“([0-9a-f]{4}):([0-9a-f]{4})” 读取l时,cat output.txt;do[$l=~$re]]&&echo${BASH_重赛[2]}${BASH_重赛[1]};完成 纯溶液:

re="([0-9a-f]{4}):([0-9a-f]{4})" cat output.txt | while read l ; do [[ $l =~ $re ]] && echo ${BASH_REMATCH[2]}${BASH_REMATCH[1]}; done re=“([0-9a-f]{4}):([0-9a-f]{4})” 读取l时,cat output.txt;do[$l=~$re]]&&echo${BASH_重赛[2]}${BASH_重赛[1]};完成
你可以把它缩小到
awk-F'[:]'{print$6$5}'
glen:我想你的行将包含(…)字符串。可以做的是只写一个awk脚本,并在捕获正确的字段后更改IFS。它不会,因为我使用空格或冒号作为字段分隔符。您可以将其缩减为
awk-F'[:]'{print$6$5}'
glen:我认为您的行将包含(…)字符串。可以做的是只写一个awk脚本,并在捕获正确的字段后更改IFS。它不会,因为我使用空格或冒号作为字段分隔符。