gpt4 book ai didi

bash - AWK - 从命令行将生成的字符串作为 awk 的代码传递

转载 作者:行者123 更新时间:2023-11-29 09:35:26 25 4
gpt4 key购买 nike

我正在尝试使用 awk 动态打印文件的选定字段。

基本上,问题是这个为什么有效:

awk -F';' '{print $3 ";" $4 ";" }' file

但这不是:

awk -F';' '{print '`echo '$3 ";" $4 ";"'`' }' file

我的最终目标是将以上内容封装在一个命令中,这样我就可以做到

my_cmd ';' 3 6 7 8 file(s)

应该显示 file(s) 中由 ; 分隔的字段 #3,6,7,8

编辑我的帖子:我自己发现我的问题是 echo 当然插入了一个新的行字符,这导致了 awk 的问题:o)\c 成功了,还有一些\"必须转义(见下文)。

awk -F';' '{print '"`echo '$3 \";\" $4 \";\"\c'`"' }' file(s)

现在我只剩下用命令来改变它,它将动态地生成一个字符串,比如$2“;” $5";' $6“;” $9 ";" (数字和字段应该是输入)等,应该在 '{print '' }'

之间

感谢 cbuckley,我找到了我的一行命令:(问题已解决)。

cut -d"$1" -f `shift; echo $* | sed 's/[^ 0-9]\{1,\}.*$//;s/[ ]$//;s/[ ]\{1,\}/,/g'` `shift; printf "%s\n" $(echo $*) | grep -v '^[0-9]$'`

这里的 $* 是输入参数,如果上面是你的 .rc 文件中名为 say filterc 的别名或函数,那么 synopsys 将是:

filterc delimiter column1 [column2 [column3...]] file1 [file2 [file3...]]  

哪里:

分隔符 - 一个字符

column1..n - 代表列的数字

file1..n - 要过滤的文件,这里假设文件名不来自只有数字,并且所有格式都相同。

最佳答案

你的命令听起来很像 cut:

cut -d ';' -f 1,3 <<EOT
one;two;three
foo;bar;quux
EOT

one;three
foo;quux

cut -d '-' -f 2,4 <<EOT
one-two-three-four
five-six-seven-eight
EOT

two-four
six-eight

关于bash - AWK - 从命令行将生成的字符串作为 awk 的代码传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24118002/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com