【问题标题】:Bash: Take argument 1 of each line in a file and put it into an arrayBash:将文件中每一行的参数 1 放入数组中
【发布时间】:2021-02-03 18:38:23
【问题描述】:

我有一个包含很多行的文件。每行由第一个,一个 1 字的字符串,第二个,一个数字组成(参数 1 和参数 2 用空格分隔)。我需要创建一个遍历每一行的脚本,并将参数 1 分配给一个数组,将参数 2 分配给另一个数组。然后,我需要使用循环以它们在(文件中)中的相同顺序打印两个数组。然后我必须按字母顺序对字符串 (arg1) 进行冒泡排序,但数字 (arg2) 必须按照它们在文件中时的相同顺序跟随字符串。然后,我需要以新的排序顺序打印两个参数(现在按字母顺序排列,但旁边带有原始数字)。

这是我认为它应该看起来的样子,但我无法开始工作:

for line in ${filename[*]}; do
    for (( i=0; i<=${#filename[*]}; i++ )); do
        array=( $(array + arg1) )
    done
done

“array + arg1”是我想不通的。我似乎不知道如何获取每行的第一个参数并将其放入数组中。你会认为这很简单。

【问题讨论】:

  • 欢迎来到 Stack Overflow。 SO is a question and answer page for professional and enthusiast programmers。请在您的问题中添加您自己的代码。您应该至少展示自己为解决这个问题所做的研究。
  • 请在您的问题中添加示例输入(无描述、无图像、无链接)和该示例输入所需的输出(无评论)。
  • 考虑在bash bubble sort array 上运行谷歌搜索;找一个(或两个)看起来很有前途的帖子,实现你自己的代码,如果你有问题,然后回来用你的代码和你遇到的问题的描述更新你的问题
  • 我对原始问题进行了一些编辑,如果有人能够为我提供一些有用的信息,请告诉我。我真的无法弄清楚很多这些脚本编写的东西,如果我能找到有用的东西(我在网上找不到任何可以帮助解决这个问题的东西),那将非常感激。

标签: arrays bash unix


【解决方案1】:

有很多方法可以做你需要的,这里是一个例子:

我的文件列表,1个字串,每行一个数字:

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

输出:

./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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-02
    • 2019-03-30
    • 1970-01-01
    • 2021-10-03
    • 1970-01-01
    • 1970-01-01
    • 2013-10-10
    • 1970-01-01
    相关资源
    最近更新 更多