假设我有一行文本如下:
I have a nice car
有没有什么方法可以在不同位置分别获取该行的不同单词(例如,我想获取“有”和“不错”部分),而不将该行保存到任何文件中。我的意思是,我想应用这样一种方法,它可以直接在给定行的所需位置给出单词。有什么办法吗?
答案1
使用awk
试试这个:
$ awk '{print $2, $4}' file
单词位置在哪里$x
,由空格分隔
例如
$ echo "I have a nice car" | awk '{print $2, $4}'
have nice
答案2
bash 有数组:
line="I have * nice car"
set -f # disable pathname expansion
words=($line) # no quotes around $line
set +f # re-enable pathname expansion
words
是一个索引数组,从零开始,所以
# print the 2nd word
echo "${words[1]}" # ==> have
# print the 2nd-last word
echo "${words[-2]}" # ==> nice
将字符串转换为数组会按照 shell$IFS
变量中包含的任意字符序列拆分字符串(默认值:空格、制表符、换行符)
答案3
line="I have a nice car"
fields=$(echo "$line" | awk '{ print $2 " " $4 }')
由空格分割。如果您想要字符位置,请使用cut
。
答案4
选项cut
echo I have a nice car | cut -d\ -f2,4
have nice
在哪里
-d' '
告诉 cut 使用空格而不是制表符-f2,4
获取第二和第四个字段