Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从列中提取文本并将其提供给Linux(bash)上的代码?_Linux_Bash_Xargs_Gawk - Fatal编程技术网

如何从列中提取文本并将其提供给Linux(bash)上的代码?

如何从列中提取文本并将其提供给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

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 '{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,
|
用于替换。因此,字段分隔符被设置为“一个或多个空格”或