获取一条线的不同部分

获取一条线的不同部分

假设我有一行文本如下:

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获取第二和第四个字段

相关内容