Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.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
Linux shell命令,用于反转变长文本记录的字段顺序_Linux_Shell_Parsing_Reverse_Command Line Interface_Perl_Awk - Fatal编程技术网

Linux shell命令,用于反转变长文本记录的字段顺序

Linux shell命令,用于反转变长文本记录的字段顺序,linux,shell,parsing,reverse,command-line-interface,perl,awk,Linux,Shell,Parsing,Reverse,Command Line Interface,Perl,Awk,我想要一个命令行咒语来反转任意长度文本记录的字段顺序。和中提供的解决方案无法解决此问题,因为它们假定字段数量是固定的,尽管可能只需稍作更改 有点像显示反向cat功能的tac命令。我想知道ohce命令会做什么(如果存在的话)来反转echo函数性 例如: a b c d e f g h i 应该转化为 d c b a f e i h g 使用awk: awk '{for (i=NF; i>1; i--) printf "%s%s", $i, FS; print $i }' file d c

我想要一个命令行咒语来反转任意长度文本记录的字段顺序。和中提供的解决方案无法解决此问题,因为它们假定字段数量是固定的,尽管可能只需稍作更改

有点像显示反向
cat
功能的
tac
命令。我想知道
ohce
命令会做什么(如果存在的话)来反转
echo
函数性

例如:

a b c d
e f
g h i
应该转化为

d c b a
f e
i h g
使用awk:

awk '{for (i=NF; i>1; i--) printf "%s%s", $i, FS; print $i }' file
d c b a
f e
i h g
使用awk:

awk '{for (i=NF; i>1; i--) printf "%s%s", $i, FS; print $i }' file
d c b a
f e
i h g

有一个命令可以执行此操作,名为
rev
from:

或使用:

但正如您在评论中所解释的,如果您想要最新的3列,您可以使用:


有一个命令可以执行此操作,名为
rev
from:

或使用:

但正如您在评论中所解释的,如果您想要最新的3列,您可以使用:

对于bash:

while read -ra words; do 
    for ((i=${#words[@]}-1; i>=0; i--)); do 
        printf "%s " "${words[i]}"
    done
    echo
done < file
读时-ra字;做
对于((i=${#words[@]}-1;i>=0;i-);做
printf“%s”${words[i]}
完成
回声
完成<文件
使用bash:

while read -ra words; do 
    for ((i=${#words[@]}-1; i>=0; i--)); do 
        printf "%s " "${words[i]}"
    done
    echo
done < file
读时-ra字;做
对于((i=${#words[@]}-1;i>=0;i-);做
printf“%s”${words[i]}
完成
回声
完成<文件
使用:

输出:

d c b a
f e
i h g
xyz abc
rev
不同,它不反转单词:

echo 'abc xyz' | datamash --no-strict -t' ' reverse
输出:

d c b a
f e
i h g
xyz abc
使用:

输出:

d c b a
f e
i h g
xyz abc
rev
不同,它不反转单词:

echo 'abc xyz' | datamash --no-strict -t' ' reverse
输出:

d c b a
f e
i h g
xyz abc

rev
反转字符,因此类似于
abc def
的行将显示为
fed cba
。这个问题是不明确的,所以@chiam必须澄清。有了这两种解决方案,OP可以选择,他们可以处理这两种情况。修复了perl版本,为每个线条添加了新行,以消除歧义,但rev反转所有字符的事实并不影响它对我的有用性,只需再次应用它
echo
给我最后三个字段|
rev
|(
read
abc忽略其余部分;
echo
$a$b$c)|
rev
如果需要最新的3列,请查看我的
awk
解决方案。
rev
将字符反转,因此类似
abc def
的行将显示为
fed cba
。这个问题是不明确的,所以@chiam必须澄清。有了这两种解决方案,OP可以选择,他们可以处理这两种情况。修复了perl版本,为每个线条添加了新行,以消除歧义,但rev反转所有字符的事实并不影响它对我的有用性,只需再次应用它
echo
给我最后三个字段|
rev
|(
read
abc忽略其余的;
echo
$a$b$c)|
rev
如果需要最新的三列,请参阅我的
awk
解决方案。