我有一个任意行数的文本文件,例如:
one line
some other line
an additional line
one more here
我想写一个脚本来根据给定的顺序重新排序这些行。例如
我可以一起破解某些东西,但我想知道是否有一个优雅的解决方案?
我可以使用bash或ksh。
答案 0 :(得分:4)
您可以使用sed
:
for num in $input ; do
sed $num'!d' file
done
答案 1 :(得分:2)
这是一个perl解决方案:
#!/usr/bin/perl -w
my @lines = <STDIN>; # Read stdin into an array
foreach my $linenum (@ARGV) { # Get the new order from argument list
print $lines[$linenum-1];
}
将脚本运行为:
./scriptname 2 1 3 4 < inputfile
答案 2 :(得分:1)
在awk中:
for num in "$@"; do
awk "NF==$num" file
done
仅限Bash(如果您将其放入脚本中,则无需重置IFS):
IFS=$'\n'
lines=( $(<file) )
for num in "$@"; do
echo lines[num-1]
done