Linux 在shellscript中使用带参数的awk?
因为我还没有在谷歌或搜索功能上找到解决方案,我将在这里询问 这是我的密码:Linux 在shellscript中使用带参数的awk?,linux,bash,awk,sh,Linux,Bash,Awk,Sh,因为我还没有在谷歌或搜索功能上找到解决方案,我将在这里询问 这是我的密码: Send="last -n 1 $1 | awk '{ print $1 " " $2 }'" 我的问题是,我的shell脚本正在使用参数 当我调用脚本时: myScript hello world 然后我的awk命令看起来像 awk '{ print hello " " world }' 但我怎样才能避免这种情况呢?有办法吗 因为这是一个项目的一部分,我不能发布更多的代码/ 首先将外部“'s”更改为$()so:
Send="last -n 1 $1 | awk '{ print $1 " " $2 }'"
我的问题是,我的shell脚本正在使用参数
当我调用脚本时:
myScript hello world
然后我的awk命令看起来像
awk '{ print hello " " world }'
但我怎样才能避免这种情况呢?有办法吗
因为这是一个项目的一部分,我不能发布更多的代码/
$()
so:send=$(last-n1$1 | awk'{print$1”“$2}')
FS
(字段分隔符)变量,该变量默认为awk中的空格,而不是空格中的“”,因此:send=$(last-n1$1 | awk'{print$1fs$2}')
$()
so:send=$(last-n1$1 | awk'{print$1”“$2}')
FS
(字段分隔符)变量,该变量默认为awk中的空格,而不是空格中的“”,因此:send=$(last-n1$1 | awk'{print$1fs$2}')
将
FS
替换为,
,因为这是OFS的目的。两者都起作用。可以提出一个参数,与FS
相比,它的类型更少,但我更喜欢FS
。因为它帮助我在逻辑上做出区分,而逗号很容易被忽略。尤其是在查看旧代码时。如果你更喜欢$1fs$2
而不是$1$2
,我认为你应该使用$1ofs$2
@EdMorton和@williampersell,我礼貌地不同意OFS
或FS
。在这种情况下,OFS
或“,”将输入一个空格,但我明确使用FS
作为字段分隔符。我在答复中提到了这一点。因此,如果将其更改为:awk-F-“{print$1 of s$2}”
您将不会得到与使用FS
相同的结果。如果需要空格,请使用逗号,但在这种情况下,FS
更可靠。(无法编辑上述内容)--在某些情况下,您可能需要使用OFS
,当您将输出字段分隔符显式设置为FS
以外的值时,但有时您只想使用awk
删除或转置一个列,当使用FS
足够时,设置OFS
有点多余。这让我想起了偏好的问题。我的回答表明FS
被用作字段分隔符。将FS
替换为,
,因为这是OFS的目的。这两种方法都有效。可以提出一个参数,与FS
相比,它的类型更少,但我更喜欢FS
。因为它帮助我在逻辑上做出区分,而逗号很容易被忽略。尤其是在查看旧代码时。如果你更喜欢$1fs$2
而不是$1$2
,我认为你应该使用$1ofs$2
@EdMorton和@williampersell,我礼貌地不同意OFS
或FS
。在这种情况下,OFS
或“,”将输入一个空格,但我明确使用FS
作为字段分隔符。我在答复中提到了这一点。因此,如果将其更改为:awk-F-“{print$1 of s$2}”
您将不会得到与使用FS
相同的结果。如果需要空格,请使用逗号,但在这种情况下,FS
更可靠。(无法编辑上述内容)--在某些情况下,您可能需要使用OFS
,当您将输出字段分隔符显式设置为FS
以外的值时,但有时您只想使用awk
删除或转置一个列,当使用FS
足够时,设置OFS
有点多余。这让我想起了偏好的问题。我的回答表明,FS
被用作字段分隔符。您如何处理$Send
变量?这是为了识别用户,不要发送重复消息;)可能名称有点混淆。如何处理$Send
变量?这是用于标识用户,不要发送重复消息;)也许这个名字有点混乱。