如何从列中提取文本并将其提供给Linux(bash)上的代码?
Suposing我有以下文本文件,其中包含空格、制表符,以及这些单词之间的任何内容:如何从列中提取文本并将其提供给Linux(bash)上的代码?,linux,bash,xargs,gawk,Linux,Bash,Xargs,Gawk,Suposing我有以下文本文件,其中包含空格、制表符,以及这些单词之间的任何内容: 1 test.1 2 word.2 3 whatever.5 我想提取第二列(不适用于我无法理解的cut-d'-f2 test.txt),然后是小数点前的片段,并将结果分别输入到一些代码中。因此,上面的文本文件应创建三个命令: mycommand test mycommand word mycommand whatever 我尝试了以下构造: cat test.txt | gawk '{pri
1 test.1
2 word.2
3 whatever.5
我想提取第二列(不适用于我无法理解的cut-d'-f2 test.txt),然后是小数点前的片段,并将结果分别输入到一些代码中。因此,上面的文本文件应创建三个命令:
mycommand test
mycommand word
mycommand whatever
我尝试了以下构造:
cat test.txt | gawk '{print $2;}' | gawk -F[.] '{print $1;}' | xargs -0 mycomand
不会产生预期结果(即创造三个不同的工作岗位)
问题:
1.如何做对?
2.如何简化表达式
3.cut
表达式有什么问题?将-0
参数拖到。您正在将换行分隔的输入馈送到,而不是NUL分隔的输入。另外,将-n1
传递到每个输入行执行mycommand
一次。
此外,您还可以将调用组合到
gawk -F'[[:space:]]+|[.]' '{print $2}'
将-0
参数拖到。您正在将换行分隔的输入馈送到,而不是NUL分隔的输入。另外,将-n1
传递到每个输入行执行mycommand
一次。
此外,您还可以将调用组合到
gawk -F'[[:space:]]+|[.]' '{print $2}'
$>grep-P-o”(?$>grep-P-o)(?Perl回答,以防您需要其他方法:
perl -ne'print (((/^\d+\s+([^\.]+)/)[0])."\n")'
Perl回答,以防需要其他方法:
perl -ne'print (((/^\d+\s+([^\.]+)/)[0])."\n")'
那一行用cat
在我的机器上做对了吗?也许我可以把两个呆呆的动作合二为一?那一行用cat
在我的机器上做对了吗?也许我可以把两个呆呆的动作合二为一?然后只有第一个学期(测试)传递给mycommand
。忽略所有其他参数。完美。矩形括号前面的竖条是什么?@Alex,|
用于替换。因此,字段分隔符设置为“一个或多个空格”或
中的一个,然后只设置第一个项(测试)传递给mycommand
。忽略所有其他参数。完美。矩形括号前面的竖条是什么?@Alex,|
用于替换。因此,字段分隔符被设置为“一个或多个空格”或