Arrays Bash:获取文件中每行的参数1并将其放入数组中
我有一个包含许多行的文件。每行由第一个1字字符串和第二个数字组成(参数1和参数2之间用空格分隔)。我需要创建一个贯穿每一行的脚本,并将参数1分配给一个数组,将参数2分配给另一个数组。然后,我需要使用循环以相同的顺序(在文件中)打印这两个数组。然后我必须按字母顺序对字符串(arg1)进行冒泡排序,但是数字(arg2)必须按照字符串在文件中的顺序进行排序。然后我需要以新的排序顺序打印这两个参数(现在按字母顺序排列,但旁边有原始数字) 以下是我认为它应该是什么样子,但我无法工作:Arrays Bash:获取文件中每行的参数1并将其放入数组中,arrays,bash,unix,Arrays,Bash,Unix,我有一个包含许多行的文件。每行由第一个1字字符串和第二个数字组成(参数1和参数2之间用空格分隔)。我需要创建一个贯穿每一行的脚本,并将参数1分配给一个数组,将参数2分配给另一个数组。然后,我需要使用循环以相同的顺序(在文件中)打印这两个数组。然后我必须按字母顺序对字符串(arg1)进行冒泡排序,但是数字(arg2)必须按照字符串在文件中的顺序进行排序。然后我需要以新的排序顺序打印这两个参数(现在按字母顺序排列,但旁边有原始数字) 以下是我认为它应该是什么样子,但我无法工作: for line i
for line in ${filename[*]}; do
for (( i=0; i<=${#filename[*]}; i++ )); do
array=( $(array + arg1) )
done
done
${filename[*]}中的行的;做
对于((i=0;i有许多方法可以满足您的需要,以下是一个示例:
我的文件列表,每行有一个单词字符串和一个数字:
cat mylist.txt
word_b 20
word_h 80
word_c 30
word_e 50
word_d 40
word_f 60
word_g 70
word_a 10
所以,你可以这样做:
#!/bin/bash
# Declare arrays
words_array=()
numbers_array=()
# Read line by line from SORTED file list
filename="mylist.txt"
IFS=$'\n'
for line in `cat $filename | sort`; do
# Assign the word in the first position and the number in the second to variables
word=$(echo $line|awk '{print $1}')
number=$(echo $line|awk '{print $2}')
# Append values to each array
words_array+=("$word")
numbers_array+=("$number")
done
# Then use loop and share iterator between arrays
for (( i=0; i<=${#words_array[@]}; i++ )); do
echo "${words_array[$i]} ${numbers_array[$i]}"
done
欢迎使用Stack Overflow。请将您自己的代码添加到您的问题中。您至少需要显示您自己为解决此问题所做的研究量。请将示例输入(无描述、无图像、无链接)和该示例输入的所需输出添加到您的问题中(无评论)考虑在“代码”> Bash冒泡排序数组< /C>中运行谷歌搜索;找到一个看起来有希望的帖子(或两个),实现自己的代码,如果有问题,请返回并用代码更新问题,并对问题进行描述。我已经对原来的问题做了一些编辑,如果有人能给我提供一些有用的信息,请告诉我。我真的不知道这些脚本编写的东西有多少,如果我能找到一些有用的东西(我在网上找不到任何有助于这一点的东西),我将不胜感激。
./myscript.sh
word_a 10
word_b 20
word_c 30
word_d 40
word_e 50
word_f 60
word_g 70
word_h 80