将多行转换为带有空格和引号的单行

将多行转换为带有空格和引号的单行

awk如何使用或tr或任何其他使其简单(但不是循环)的工具将多行转换为带有空格和引号的单行for

$ cat databases.txt
Wp_new
Frontend DB
DB_EXT

预期的:

$ cat databases.txt
"Wp_new" "Frontend DB" "DB_EXT"  

编辑1:

感谢所有有用的答案。但我标记为正确的那个是可以在短时间内在终端上输入的,并且麻烦更少(简单),这样我(系统管理员)就可以非常快速地完成操作,而不会使系统停机时间更长。

答案1

可以用以下方法完成

awk '{printf("\"%s\" ",$0)} END { printf "\n" }' databases.txt

输出:

"Wp_new" "Frontend DB" "DB_EXT" 

答案2

sed + paste

$ sed 's/.*/"&"/' databases.txt
"Wp_new"
"Frontend DB"
"DB_EXT"

$ sed 's/.*/"&"/' databases.txt | paste -sd' ' -
"Wp_new" "Frontend DB" "DB_EXT"

或者,只是paste(礼貌https://unix.stackexchange.com/a/593240

$ <databases.txt paste -d '"' /dev/null - /dev/null | paste -sd' ' -
"Wp_new" "Frontend DB" "DB_EXT"


如果输入有应忽略的空行:

$ cat ip.txt
Wp_new

Frontend DB



DB_EXT
$ sed -n 's/..*/"&"/p' ip.txt | paste -sd' ' -
"Wp_new" "Frontend DB" "DB_EXT"

答案3

$ awk '{printf "%s\"%s\"", sep, $0; sep=OFS} END{print ""}' file
"Wp_new" "Frontend DB" "DB_EXT"

答案4

GNU xargs

<databases.txt xargs -d'\n' printf '"%s"\n' | paste -sd\  ;

或者我们也可以使用 perl:

perl -l40 -012 -pe 's/^|$/"/g;$\=$/ if eof' databases.txt

结果

"Wp_new" "Frontend DB" "DB_EXT"

相关内容