如何在linux命令/脚本上使用sed、awk或grep从文件中获取值?
我有一个值为的file1:如何在linux命令/脚本上使用sed、awk或grep从文件中获取值?,linux,shell,awk,sed,grep,Linux,Shell,Awk,Sed,Grep,我有一个值为的file1: <action> <row> <column name="book" label="book">stick man (2020)/</column> <column name="referensi" label="referensi"> http://172.22.215.234/Data/Book/Journa
<action>
<row>
<column name="book" label="book">stick man (2020)/</column>
<column name="referensi" label="referensi"> http://172.22.215.234/Data/Book/Journal/2016_2020/1%20Stick%20%282020%30/</column>
</row>
<row>
<column name="book" label="book">python easy (2019)/</column>
<column name="referensi" label="referensi"> http://172.22.215.234/Data/Book/Journal/2016_2020/2%20Buck%20%282019%30/</column>
</row>
</action>
我的代码:
grep -oP 'href="([^".]*)">([^</.]*)' file1
grep-oP'href=“([^.]*)”>([^
$awk-vrs=']+>'-NF{printf“%s”,$0(++c%2?”|“:ORS)}文件
木棍人(2020)/|http://172.22.215.234/Data/Book/Journal/2016_2020/1%20Stick%20%282020%30/
python easy(2019)/|http://172.22.215.234/Data/Book/Journal/2016_2020/2%20Buck%20%282019%30/
请注意,正斜杠位于原始数据中
需要多字符RS
支持(GNU awk)。使用awk
您可以尝试:
awk -F'>|/<' '{ORS= (NR == 3 || NR == 7) ? " |" : "\n"} $2 != "" {print $2}' file
stick man (2020) | http://172.22.215.234/Data/Book/Journal/2016_2020/1%20Stick%20%282020%30
python easy (2019) | http://172.22.215.234/Data/Book/Journal/2016_2020/2%20Buck%20%282019%30
awk-F'>|/|/。使用xmllint或xmlstarlet。使用支持xml的python ruby perl语言和其他支持xml的工具。可以编写hxselect
命令来生成OP中显示的输出吗?我问,因为编码的示例只返回URL,而不是例如stick man(2020)| http…
@user3439894我怀疑hxselect
本身是否能够做到这一点,但是在使用该工具提取数据后,处理它应该相对容易。因此,如果我理解您在前面的评论中对我的问题的回答,并且使用OP中的数据,我必须调用hxselect
两次,并使用额外的正常实用程序。如果是这样,那么不同的数据有许多目标,这不是一个非常实用的实用程序。无论如何,感谢您的回答,并且很高兴有另一个工具可以工作。显示的输出与OP中的示例输出不匹配。他正在寻找例如stickman(2020)| http…
notstickman(2020)/| http…
,注意到/
后面的/
是不需要的。I“我几乎可以肯定他的样本数据有复制/粘贴错误或打字错误。没有必要删除不存在的字符,因为在问题中没有提及对它们进行修剪。这完全基于OP中的示例,但我必须同意KamilCuk对OP的评论。是的,该工具或类似工具将是正确的方法。
<action>
<row>
<column name="book" label="book">stick man (2020)/</column>
<column name="referensi" label="referensi"> http://172.22.215.234/Data/Book/Journal/2016_2020/1%20Stick%20%282020%30/</column>
</row>
<row>
<column name="book" label="book">python easy (2019)/</column>
<column name="referensi" label="referensi"> http://172.22.215.234/Data/Book/Journal/2016_2020/2%20Buck%20%282019%30/</column>
</row>
</action>
cat file.html | hxselect -i -c -s '\n' column[label=referensi]
$ awk -v RS='<[^>]+>' 'NF{printf "%s", $0 (++c%2?" |":ORS)}' file
stick man (2020)/ | http://172.22.215.234/Data/Book/Journal/2016_2020/1%20Stick%20%282020%30/
python easy (2019)/ | http://172.22.215.234/Data/Book/Journal/2016_2020/2%20Buck%20%282019%30/
awk -F'>|/<' '{ORS= (NR == 3 || NR == 7) ? " |" : "\n"} $2 != "" {print $2}' file
stick man (2020) | http://172.22.215.234/Data/Book/Journal/2016_2020/1%20Stick%20%282020%30
python easy (2019) | http://172.22.215.234/Data/Book/Journal/2016_2020/2%20Buck%20%282019%30
awk -F'>|/<' '{ORS= (NR%2) ? " |" : RS} $2 != "" {print $2}' file