使用ubuntu中的命令从文件中获取特定字段值
我正在使用Ubuntu 14。 我想从文件(,separated文件)中获取字段(F1)值 但问题是现场位置没有固定。 并且只想在Linux中使用命令 这里我附上一个例子: F2=xyz,F3=123,F1=json,F4=format,F5=331使用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=.
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,我尝试了此命令,但输出无效。你能告诉我另一个命令吗。。