我有一个包含如下行的文件:
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