test1="one two three four five"
echo $test1 | cut -d $'\t' -f2
我有一个以TAB
分隔的字符串,我希望通过cut
命令得到第二个字。
我发现了问题How to split a string in bash delimited by tab。但该解决方案不与cut
一起使用。
答案 0 :(得分:4)
这种情况正在发生,因为您需要$test1
时引用echo
:
echo "$test1" | cut -d$'\t' -f2
否则,格式消失,标签转换为空格:
$ s="hello bye ciao"
$ echo "$s" <--- quoting
hello bye ciao
$ echo $s <--- without quotes
hello bye ciao
答案 1 :(得分:2)
你不需要cut
并且可以为自己省钱:
$ test1=$(printf "one\ttwo\three\tfour\tfive")
$ read _ two _ <<< "${test1}"
$ echo "${two}"
two
答案 2 :(得分:0)
尝试使用cut
而不使用任何-d
选项:
echo "$test1" | cut -f2
以下是来自cut
手册页的专家:
-d, --delimiter=DELIM
use DELIM instead of TAB for field delimiter
答案 3 :(得分:-3)
我跑了这个:
test1="one;two;three;four;five"
echo $test1 | cut -d \; -f2
并获得:
two
和你的例子:
test1="one two three four five"
echo $test1 | cut -d \t -f2
并获得:
wo
希望有帮助。
这是我认为的问题。