在我的文件之后,我得到了以下输出:
pm/or { distribution: 'Old disctribution ', version_1: '6.5 (New)', version_2: '2.36' }
我想从此文件中剪切仅作为分发名称:旧的分发或仅作为版本_2:2.36。
作为输出我想得到: 旧的分发
有人可以帮忙怎么做?
答案 0 :(得分:1)
尝试使用'
作为分隔符进行剪切
类似的东西:
cut -d \' -f 2,6 myfile.txt > output.txt
我只是试试这个并且它正常运作
答案 1 :(得分:0)
awk -F\' '{ print $2 }' file
或者
awk -F\' '/pm/or {/ { print $2 }' file
答案 2 :(得分:0)
看起来模糊地想要解析JSON。如果您的文件格式差不多,但不完全是JSON,那么最好的办法是将其重塑为正确的JSON,然后使用合适的JSON工具。
sed 's%^pm/or %%;s%\([_A-Za-z0-9]*\):%"\1":%g' myfile.txt | jq '.distribution'
可以从http://stedolan.github.io/jq/
获取jq
工具
答案 3 :(得分:0)
您可以使用distribution
获取awk
密钥的值,如下所示:
awk -F"'" '{for(;i<=NF;i++) {if($i ~ /distribution: $/) print $(i+1)}}' file
答案 4 :(得分:0)
在脚本中也可以使用Bash参数扩展来处理提取所需的文本:
#!/bin/bash
temp=`cat dat/catfile.txt` # read file into temp
temp="${temp##*ion: \'}" # remove begin to 'ion: \''
echo "string '${temp%%[^a-z]\',*version*}'" # remove end to first version
<强>输入强>
$ cat dat/catfile.txt
pm/or { distribution: 'Old disctribution ', version_1: '6.5 (New)', version_2: '2.36' }
<强>输出:强>
$ cutcat.sh
string 'Old disctribution'
(与原文拼写)