我有一个文件A,其中包含n行.我还有一个n个整数的序列,所有这些都是唯一的并且< n.我的目标是创建一个文档B,它具有与A相同的内容,但具有基于给定序列的重新排序的行.
例:
答:
Foo
Bar
Bat
Run Code Online (Sandbox Code Playgroud)
顺序:( 2,0,1意思是:第一行2,然后行0,然后行1)
输出(B):
Bat
Foo
Bar
Run Code Online (Sandbox Code Playgroud)
在此先感谢您的帮助
另一种方案:
您可以通过执行创建序列文件(假设序列以逗号分隔):
echo $sequence | sed s/,/\\n/g > seq.txt
Run Code Online (Sandbox Code Playgroud)
然后,就这样做:
paste seq.txt A.txt | sort tmp2.txt | sed "s/^[0-9]*\s//"
Run Code Online (Sandbox Code Playgroud)
这是一个bash函数.订单可以由任何东西分隔.
用法: schwartzianTransform "A.txt" 2 0 1
function schwartzianTransform {
local file="$1"
shift
local sequence="$@"
echo -n "$sequence" | sed 's/[^[:digit:]][^[:digit:]]*/\
/g' | paste -d ' ' - "$file" | sort -n | sed 's/^[[:digit:]]* //'
}
Run Code Online (Sandbox Code Playgroud)