Akh*_*hil 7 shell text-processing
如何使用awk或tr或任何其他使其简单(但不是for循环)的工具将多行转换为带有空格和引号的单行?
$ cat databases.txt
Wp_new
Frontend DB
DB_EXT
Run Code Online (Sandbox Code Playgroud)
预期的:
$ cat databases.txt
"Wp_new" "Frontend DB" "DB_EXT"
Run Code Online (Sandbox Code Playgroud)
Sky*_*net 12
可以用awk来完成
awk '{printf("\"%s\" ",$0)} END { printf "\n" }' databases.txt
Run Code Online (Sandbox Code Playgroud)
输出:
"Wp_new" "Frontend DB" "DB_EXT"
Run Code Online (Sandbox Code Playgroud)
和 sed + paste
$ sed 's/.*/"&"/' databases.txt
"Wp_new"
"Frontend DB"
"DB_EXT"
$ sed 's/.*/"&"/' databases.txt | paste -sd' ' -
"Wp_new" "Frontend DB" "DB_EXT"
Run Code Online (Sandbox Code Playgroud)
或者,只是paste(礼貌https://unix.stackexchange.com/a/593240)
$ <databases.txt paste -d '"' /dev/null - /dev/null | paste -sd' ' -
"Wp_new" "Frontend DB" "DB_EXT"
Run Code Online (Sandbox Code Playgroud)
如果输入有应忽略的空行:
$ cat ip.txt
Wp_new
Frontend DB
DB_EXT
$ sed -n 's/..*/"&"/p' ip.txt | paste -sd' ' -
"Wp_new" "Frontend DB" "DB_EXT"
Run Code Online (Sandbox Code Playgroud)