我正在尝试将生成的密钥生成一行的txt文件。例如:
<----- key start ----->
lkdjasdjskdjaskdjasdkj
skdhfjlkdfjlkdsfjsdlfk
kldshfjlsdhjfksdhfksdj
jdhsfkjsdhfksdjfhskdfh
jhdfkjsdhfkjsdhfkjsdhf
<----- key stop ----->
我希望它看起来像:
lkdjasdjskdjaskdjasdkjskdhfjlkdfjlkdsfjsdlfkkldshfjlsdhjfksdhfksdjjdhsfkjsdhfksdjfhskdfhjhdfkjsdhfkjsdhfkjsdhf
注意我还希望删除行<----- key start ----->
和<----- key stop ----->
。我怎样才能做到这一点?这会用sed
完成吗?
答案 0 :(得分:13)
tr -d '\n' < key.txt
上找到
答案 1 :(得分:5)
如果你正在寻找一个sed中你要求的所有东西,我有这个......
sed -n '1h;2,$H;${g;s/\n//g;s/<----- key \(start\|stop\) ----->//g;p}' key.txt
但它不易读取:)如果你不介意输入几个命令,你可以在你得到的其余答案中使用管道grep,tr,sed等建议。
答案 2 :(得分:4)
要将多行输出转换为单个空格分隔行,请使用
tr '\n' ' ' < key.txt
我知道这不回答详细的问题。但这是一个可能的标题答案。我需要这个答案,我的谷歌搜索发现了这个问题。
答案 3 :(得分:2)
grep '^[^<]' test.txt | tr -d '\n'
答案 4 :(得分:1)
一种简单的方法是使用cat file.txt | tr -d '\n'
答案 5 :(得分:1)
awk '/ key (start|stop) / {next} {printf("%s", $0)} END {print ""}' filename
答案 6 :(得分:0)
在vim中,它只是:%s / ^ M //
我一直用这个来从行生成逗号分隔的列表。对于sed或awk,请查看此链接中的许多解决方案:
http://www.unix.com/shell-programming-scripting/35107-remove-line-break.html
示例:
paste -s -d','tmpfile | sed's /,/,/ g'
答案 7 :(得分:0)
grep -v -e "key start" -e "key stop" /PATH_TO/key | tr -d '\n'
答案 8 :(得分:0)
您也可以使用man 1 ed
加入行:
str='
aaaaa
<----- key start ----->
lkdjasdjskdjaskdjasdkj
skdhfjlkdfjlkdsfjsdlfk
kldshfjlsdhjfksdhfksdj
jdhsfkjsdhfksdjfhskdfh
jhdfkjsdhfkjsdhfkjsdhf
<----- key stop ----->
bbbbb
'
# for in-place file editing use "ed -s file" and replace ",p" with "w"
# cf. http://wiki.bash-hackers.org/howto/edit-ed
cat <<-'EOF' | sed -e 's/^ *//' -e 's/ *$//' | ed -s <(echo "$str")
H
/<----- key start ----->/+1,/<----- key stop ----->/-1j
/<----- key start ----->/d
/<----- key stop ----->/d
,p
q
EOF
# print the joined lines to stdout only
cat <<-'EOF' | sed -e 's/^ *//' -e 's/ *$//' | ed -s <(echo "$str")
H
/<----- key start ----->/+1,/<----- key stop ----->/-1jp
q
EOF
答案 9 :(得分:0)
这可能适合你(GNU sed):
sed -r '/key start/{:a;N;/key stop/!ba;s/^[^\n]*\n(.*)\n.*/\1/;s/\n//g}' file
收集key start
和key stop
之间的行。然后删除第一行和最后一行并删除任何换行符。
答案 10 :(得分:0)
tail -n +2 key.txt | head -n -1 | tr -d '\n'
要删除第一行,请尾巴,最后一行,tr要删除换行符。