这是我的代码
title=""
line=""
fname=$1
numoflines=$(wc -l < $fname)
for ((i=2 ; i<=$numoflines ; i++))
do
...
done
在for循环中,我想将每行的第一个单词打印到$ title中 而没有第一个单词的其余部分进入$ line (使用bash) tnx
答案 0 :(得分:1)
我假设通过打印到变量,你的意思是将每行的内容添加到变量中。为此,您可以使用bash内置函数read
:
while read -r t l; do title+="$t"; line+="$l"; done < "$fname"
这会将每行的第一个单词添加到$title
,将其余行添加到$line
。
答案 1 :(得分:0)
你可以这样做:
echo "$fname"
This is my line.
My cat is green.
title=$(awk '{print $1}' <<< "$fname")
line=$(awk '{$1="";sub(/^ /,"")}1' <<< "$fname")
echo "$title"
This
My
echo "$line"
is my line.
cat is green.
答案 2 :(得分:0)
使用cut
命令的替代方法:
file="./myfile.txt"
title=$(cut -f1 -d ' ' "$file")
line=$(cut -f2- -d ' ' "$file")
#check print
pr -tm <(echo -e "TITLES\n$title") <(echo -e "LINES\n$line")
代表下一个myfile.txt
My cat is green.
Green cats are strange.
打印
TITLES LINES
My cat is green.
Green cats are strange.
答案 3 :(得分:-1)
do
Tempo="$( sed -n "${i} {s/^[[:blank:]]*\([^[:blank:]]*\)[[:blank:]]*\(.*\)/title='\1';line='\2'/p;q;}" ${fname} )"
eval "${Tempo}"
done
# or
do
sed -n "${i} {p;q;}" | read Line Title
# but this does not keep content available on each OS/shell
done