尴尬如何打印其余的



我的文件包含这样的行

any1 aaa bbb ccc

定界符是空间。行中的单词数是未知的

我想将第一个单词放入var1中。很简单,

awk '{print $1}'

现在,我想将其余部分放入尴尬的var2中。

如何用awk打印其余的行?

最好在这里使用read

s="any1 aaa bbb ccc"
read var1 var2 <<< "$s"
echo "$var1"
any1
echo "$var2"
aaa bbb ccc

awk仅解决方案使用:

echo "$s" | awk '{print $1; print substr($0, index($0, " ")+1)}'
any1
aaa bbb ccc

awk解决方案:

awk '{$1 = ""; print $0;}'`
$ var=$(awk '{sub(/^[^[:space:]]+[[:space:]]+/,"")}1' file)
$ echo "$var"
aaa bbb ccc

或通常跳过一些字段使用RE间隔:

$ awk '{sub(/^[[:space:]]*([^[:space:]]+[[:space:]]+){1}/,"")}1' file
aaa bbb ccc
$ awk '{sub(/^[[:space:]]*([^[:space:]]+[[:space:]]+){2}/,"")}1' file
bbb ccc
$ awk '{sub(/^[[:space:]]*([^[:space:]]+[[:space:]]+){3}/,"")}1' file
ccc

请注意,如果您的FS超过一个char,这样做会变得更加复杂,并且以上仅适用于默认的FS,因为如果存在,它还会跳过任何领先的空白(如果您有一个,请删除第一个[[:space:]]*非默认,但仍然是单char fs)。

相关内容

  • 没有找到相关文章

最新更新