Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.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
如何使用bash管道保留除第一个令牌之外的所有内容?_Bash_Shell - Fatal编程技术网

如何使用bash管道保留除第一个令牌之外的所有内容?

如何使用bash管道保留除第一个令牌之外的所有内容?,bash,shell,Bash,Shell,假设我有这个: echo " word1 word2 word3" | awk '{print $1;}' # Prints "word1" 我想在第二个标记开始之前删除所有内容,因此我想保留word2 word3。我可以做的只是删除第一个标记,然后修剪其余部分,但除了第一个标记,我不知道如何保留所有内容。awk的for:echo“word1 word2 word3”| awk'{for(I=2;I) 将只在rest上存储word2 word3。请参阅bash手册页中的read命令。回显

假设我有这个:

echo "   word1  word2 word3" | awk '{print $1;}' # Prints "word1"
我想在第二个标记开始之前删除所有内容,因此我想保留
word2 word3
。我可以做的只是删除第一个标记,然后修剪其余部分,但除了第一个标记,我不知道如何保留所有内容。

awk的for:
echo“word1 word2 word3”| awk'{for(I=2;I)

将只在rest上存储word2 word3。请参阅bash手册页中的read命令。

回显“word1 word2 word3”| rev | awk'NF--| rev
)第一个标记后的模式总是已知的吗?例如,在您的情况下,
word2
?为什么需要使用管道?使用linux工具操作字符串的方法有很多种,不一定是pipe@Cyrus不太有效,我得到了所有3个标记,但似乎对我不起作用:
echo“word1 word2 word3”| read skip rest | cat
将其导入
cat
是没有意义的。正如我所说,这两个词存储在
rest
中。只需执行
echo$rest
。管道退出后,存储在命令中的变量将不可用。do
read skip rest@user1934428:不确定你的意思他说的是什么问题请注意,您不能执行
echo“word1 word2 word3”|读取skip rest
,然后
echo
输出变量。它们不会被删除available@AlexanderMills:但是跳过的令牌被存储了!它在
skip
中。您确实按照我的建议阅读了bash手册页,不是吗?然后您知道该命令是如何工作的。我也在考虑这个问题,但这会破坏OP希望在第一个令牌之后保留所有内容,我理解这包括令牌之间的空格数。如果需要保留空格,可能有更简单的方法,可以使用
sed的/^[\t]*//“
修剪前导空格和
cut-d'-f2-
在第一个空格后保留所有内容,例如:
echo”word1 word2 word3“| sed's/^[\t]*/'| cut-d'-f2-| sed's/^[\t]*/'
或者如果需要修剪前导空格:
echo”word1 word2 word3 w4 w5“| sed's/\t]*//|cut-d'-f2-|sed's/^[\t]*/'
  echo "   word1  word2      word3" | read skip rest