从文本文件中提取一行中的第二个单词

时间:2014-08-25 18:07:05

标签: bash unix awk sed cut

我目前需要在文本文件的一行中提取第二个单词(CRISTOBAL)。

                 *   CRISTOBAL  AL042014  08/05/14  12  UTC   *

“CRISTOBAL”行中的第二个单词每天都会有所不同,所以我只需要找到一种从行中提取第二个单词/字符的方法。

3 个答案:

答案 0 :(得分:13)

第二个字

echo '*   CRISTOBAL  AL042014  08/05/14  12  UTC   *' | awk  '{print $2}'

会给你CRISTOBAL

echo 'testing only' | awk  '{print $2}'

会给你only

如果线条的结构发生变化,您可能需要修改此项。

文本文件中第2行的单词

如果您的文本文件包含以下两个句子

this is a test
*   CRISTOBAL  AL042014  08/05/14  12  UTC   *

正在运行awk '{print $2}' filename.txt将返回

is
CRISTOBAL

第二个字符

echo 'testing only' | cut -c 2

这将为您提供e,这是第二个字符,您可能需要修改它以满足您的需求。

答案 1 :(得分:1)

如果需要/只能使用sed

sed '^ *[^ ]* *\([^ ]*\) .*/\1/' YourFile

取第二个非空白组(假设

一词后至少有一个空白

但我更喜欢削减速度(如果需要任何操作,则选择awk)。

实际上它主要依赖于脚本中的下一个动作(如果有的话)。

答案 2 :(得分:-1)

我知道它很旧,但是@NeronLeVelu 没有我需要的管道。

ip link show wlan0 | grep 'link'| sed 's/^ *[^ ]* *\([^ ]*\) .*/\1/'

是我用来提取 MAC 地址的。由于其他原因,我无法使用 awk。