使用ubuntu中的命令从文件中获取特定字段值

使用ubuntu中的命令从文件中获取特定字段值,ubuntu,terminal,command,field,Ubuntu,Terminal,Command,Field,我正在使用Ubuntu 14。 我想从文件(,separated文件)中获取字段(F1)值 但问题是现场位置没有固定。 并且只想在Linux中使用命令 这里我附上一个例子: F2=xyz,F3=123,F1=json,F4=format,F5=331 F1=csv,F2=xyz,F3=123,F4=format,F5=240 F2=xyz,F3=123,F1=xml,F4=format,F5=128 F2=xyz,F3=123,F4=lang,F1=java,F5=350 F2=xyz,F1=.

我正在使用Ubuntu 14。 我想从文件(,separated文件)中获取字段(F1)值 但问题是现场位置没有固定。 并且只想在Linux中使用命令

这里我附上一个例子:

F2=xyz,F3=123,F1=json,F4=format,F5=331
F1=csv,F2=xyz,F3=123,F4=format,F5=240
F2=xyz,F3=123,F1=xml,F4=format,F5=128
F2=xyz,F3=123,F4=lang,F1=java,F5=350
F2=xyz,F1=.net,F3=123,F4=lang,F5=500
F1=csv,F2=xyz,F3=123,F4=format,F5=240
F2=xyz,F3=123,F1=string,F4=format,F5=60
F2=xyz,F3=123,F4=format,F1=byte,F5=140

输出应为:

json
csv
xml
java
.net
csv
字符串

字节

您可以尝试下面的命令

grep -o '[^ ]*F1[^ ]*' FILENAME | cut -c4- | rev | cut -c2- | rev

manoj所说的是有效的,假设您给出了正确的文件路径位置。您还可以使用
sed
截断字符,如:

  $ grep -o 'F1=[^,]*' /path/to/file | cut -c4-
  $ grep -o '[^ ]*F1[^ ]*' /path/to/file | sed "s/^F1=\(.*\),$/\1/"
更新,这也适用于ubuntu-PCRE

  $ grep -oP 'F1=\K([^,]*)' /path/to/file

只需更换你不需要的部件

sed 's/^\(.*, \)\?F1=//;s/, .*//' file

第一个表达式替换F1=标记之前的所有内容,第二个表达式替换值之后的所有内容。我假设传统的Linux
sed
语法(分组括号和
量词需要反斜杠);如果您在不同的平台上,请相应地进行调整。

您好,Manoj,我尝试了此命令,但输出无效。你能告诉我另一个命令吗。。