我有一个变量:sed的一个猛砸字符串变量
temp='Some text \n Some words \n'
我想删除其中的一些线与sed的:
sed -e '1d' $temp
我想知道这是可能的。
我有一个变量:sed的一个猛砸字符串变量
temp='Some text \n Some words \n'
我想删除其中的一些线与sed的:
sed -e '1d' $temp
我想知道这是可能的。
当你通过字符串作为参数,sed
将其解释为一个文件名或文件名列表:
sed -e '1d' "$temp"
当然,这不是你想要的。
这里需要使用字符串<<<
代替:
temp=$'Some text\nSome words\nLast word'
sed '1d' <<< "$temp"
输出:
Some words
Last word
请注意'\ n'因为'$'\ n''引用而只是一个换行符。只有'\ n'',它将是一个字面的'\ n'。 –
请参见[Bash中的单引号和双引号之间的区别](https://stackoverflow.com/a/42082956/6862601)。 – codeforester
POSIX兼容的方式来做到这一点是:
temp="$(printf '%s\n' "$temp" | sed '1d')"
如果你只需要一个bash兼容解决方案请参阅codeforester's answer,因为这里的字符串语法要好得多dable。
显示预期结果 – RomanPerekhrest