Shell CSH-后引号中的命令将丢失所有空格和换行符
当我使用Shell CSH-后引号中的命令将丢失所有空格和换行符,shell,csh,tcsh,Shell,Csh,Tcsh,当我使用tcsh处理txt文件时,我遇到了一个问题。 我已经处理了数据,并将结果存储在变量temp中 对于以下命令,它用于对处理后的数据进行排序,并将排序后的数据存储在临时文件中。它可以产生正确的结果: echo "$temp" | sort -t , -k1n -k2 >> tempsorted 然而,由于某些原因,我不能使用临时文件。我需要将结果重定向到变量。我尝试了以下命令: set a=`echo "$temp" | sort -t , -k1n -k2` 此命令删除结果
tcsh
处理txt文件时,我遇到了一个问题。
我已经处理了数据,并将结果存储在变量temp
中
对于以下命令,它用于对处理后的数据进行排序,并将排序后的数据存储在临时文件中。它可以产生正确的结果:
echo "$temp" | sort -t , -k1n -k2 >> tempsorted
然而,由于某些原因,我不能使用临时文件。我需要将结果重定向到变量。我尝试了以下命令:
set a=`echo "$temp" | sort -t , -k1n -k2`
此命令删除结果中的所有空格
和换行符
。这样:2739,诺斯维尔市,韦恩,诺斯维尔市|韦恩| 2739 2929,格罗斯角海岸城村,韦恩,格罗斯角海岸城村|韦恩| 2929…
有人知道这件事吗?我需要将排序结果存储在一个变量中,以便在不使用临时文件的情况下进行额外处理。Env应该是#/bin/tcsh-f
谢谢
temp
变量中的部分内容:
部分预期结果:
我尝试了错误的解决方案:
一,
有错误消息
Illegal variable name.
Unmatched `.
二,
有错误消息
Illegal variable name.
Unmatched `.
`在tcsh中称为命令替换。默认情况下,命令替换将整个输出转换为以空格、制表符和换行符分隔的“单词”。我认为这种行为是无法改变的。请参见下面的简单示例
> cat /tmp/file
lots of spaces
line 2
> echo `cat /tmp/file`
lots of spaces line 2
>
跨站点复制:在#1中,您是不是舒尔不应该是
echo“$temp”
?另外,如果您想检查$a
的值,请不要忘记引用echo“$a”
,谢谢您的回复。但是当我把echo“$temp”| sort-t,-k1n-k2
填充到some命令中时,它会给出“Unmatched`。”错误。在``周围加一个“”是正确的方法。您是否尝试过设置a=“`echo$temp:q | sort-t,-k1n-k2`”
?
Unmatched `.
> cat /tmp/file
lots of spaces
line 2
> echo `cat /tmp/file`
lots of spaces line 2
>