贝壳怎么切?

贝壳怎么切?

例如:

假设这是一个文件号

1.   hi
2.   hello
3.   hey

如何删除空格以得到“你好”?

$ head -1 num | (what should be here to make it below)
hi

答案1

awk使用类似于带有操作的模式构建的代码。这里的“模式”是您只想对第一行执行某些操作,“操作”是“打印第二列(然后退出)”:

awk 'NR == 1 { print $2; exit }' file

在这种情况下,这exit是一个可选的优化,可以删除(没有其他行为NR1)。NR表示“当前行的序号”或“到目前为止读取的行数”。


在这个简单的例子中,根据您的head尝试进行构建:

head -n 1 file | while read -r num word; do printf '%s\n' "$word"; done

或者,

read -r num word <file
printf '%s\n' "$word"

会完成同样的事情,因为我们只对第一行感兴趣。

... 但在 shell 本身中解析文本很容易出错,应该避免。有了这样一个小例子,它就可以正常工作了。


你用了这个词标题中的英文意思与,这是另一个 Unix 实用程序。它可以在这里使用,但它有点简单,并且如何使用它取决于两列数据之间的分隔符。

  1. 如果列之间有一个选项卡:

    head -n 1 file | cut -f 2
    
  2. 如果列之间有三个空格:

    head -n 1 file | cut -d ' ' -f 4
    

答案2

这取决于您想要第一行还是特定行(foo是您的文件)。

如果您只想分割特定行,请使用

$ awk 'NR==1 { print $2; exit}' foo
hi
$ awk 'NR==2 { print $2; exit}' foo
hello

如果您想根据内容选择行,请使用

$ awk '/1./ { print $2; exit }' foo
hi
$ awk '/2./ { print $2; exit }' foo
hello
$ awk '$1 ~ 2. { print $2; exit }' foo
hello
$ awk '/hello/ { print $2; exit }' foo
hello

在所有情况下,都会exit确保仅打印第一个匹配项(并且它还会阻止整个文件的处理)。

相关内容