bash 在同一行中将冗长的命令转换为小写
bash converting lenghty command into lowercase within same line
我现在有一个命令
$(sed $((SS - default_scripts))!d customScripts.txt)
它给了我 Foo Bar
,我想将其转换为小写,但是当我尝试在其上使用 | awk '{print tolower([=14=])}'
命令时,它看起来像这样
$($(sed $((SS - default_scripts))!d customScripts.txt) | awk '{print tolower([=12=])}')
然而这个 returns 没什么,也许 awk
将其转换为小写的方法无效或不正确。
所以请指教我的打字错误,或者推荐我另一种 POSIX 以紧凑的方式将整个字符串转换为小写的方法。谢谢!
awk 的管道应该在与 sed
相同的命令替换内,以便它处理 sed
的输出。
$(sed $((SS - default_scripts))!d customScripts.txt | awk '{print tolower([=10=])}')
你不需要围绕它们进行另一个命令替换。
您的拼写错误将所有内容都包装在 $(...)
中,因此首先尝试仅执行 sed
部分的输出,然后尝试执行 sed ... | awk ...
管道的输出。
在使用 awk 时,您不需要 sed 命令,也不需要 shell 算术运算。如果我明白你想用这个做什么:
$(sed $((SS - default_scripts))!d customScripts.txt) | awk '{print tolower([=10=])}'
正确的话就是这个 awk 命令:
awk -v s="$SS" -v d="$default_scripts" 'BEGIN{n=s-d} NR==n{print tolower([=11=]); exit}' customScripts.txt
我现在有一个命令
$(sed $((SS - default_scripts))!d customScripts.txt)
它给了我 Foo Bar
,我想将其转换为小写,但是当我尝试在其上使用 | awk '{print tolower([=14=])}'
命令时,它看起来像这样
$($(sed $((SS - default_scripts))!d customScripts.txt) | awk '{print tolower([=12=])}')
然而这个 returns 没什么,也许 awk
将其转换为小写的方法无效或不正确。
所以请指教我的打字错误,或者推荐我另一种 POSIX 以紧凑的方式将整个字符串转换为小写的方法。谢谢!
awk 的管道应该在与 sed
相同的命令替换内,以便它处理 sed
的输出。
$(sed $((SS - default_scripts))!d customScripts.txt | awk '{print tolower([=10=])}')
你不需要围绕它们进行另一个命令替换。
您的拼写错误将所有内容都包装在 $(...)
中,因此首先尝试仅执行 sed
部分的输出,然后尝试执行 sed ... | awk ...
管道的输出。
在使用 awk 时,您不需要 sed 命令,也不需要 shell 算术运算。如果我明白你想用这个做什么:
$(sed $((SS - default_scripts))!d customScripts.txt) | awk '{print tolower([=10=])}'
正确的话就是这个 awk 命令:
awk -v s="$SS" -v d="$default_scripts" 'BEGIN{n=s-d} NR==n{print tolower([=11=]); exit}' customScripts.txt