使用 sed 从空格分隔的字符串中解析出特定值

使用 sed 从空格分隔的字符串中解析出特定值

我有一个包含如下行的文件:

0 6 973 1346 2318 456 431 93 58 1 1 0 0 0 0

我想提取第 1、4 和 5 个数字并将它们保存在 bash 中的变量中以供进一步使用。在上面的例子中,我想要的值是“0”、“1346”和“2318”。

我正在考虑使用 sed,但我不知道如何使用。也欢迎使用其他方法。

ps. 谢谢你的回答,下面是我现在正在使用的:

for fn in $(cat filelist); do
  more $fn | \                                                                                                                                                                         
      while read str; do
          echo $str
          var=$(echo $str | awk -F" " '{print $1,$2,$3,$4,$5}')
          set -- $var
          echo $1
          echo $4
          echo $5
  done
done

有用啊~~

答案1

cat myFile.txt | 下面的脚本:

#!/bin/bash
while read lineOfText
do
    echo $lineOfText | any of the approaches from http://www.unix.com/shell-programming-scripting/38450-split-string-using-separetor.html
done

答案2

while read -r fn
    while read -r first second third fourth fifth remainder
    do
        echo "$first"
        echo "$fourth"
        echo "$fifth"
    done < "$fn"
done < filelist

答案3

如果我可以提出建议,您可以像这样简化您的脚本:

for fn in $(< filelist); do  #Replacement for $(cat filelist)
  while read str; do
    echo $str
    # No need for set --, unless you *really* want the values to be
    # placed in $1, $4, and $5
    read var1 var4 var5 <<< "$( echo $str | awk '{print $1,$4,$5}' )"
    echo $var1
    echo $var4
    echo $var5
  done < $fn  # Replaces more $fn |
done

相关内容