Open vieyahn2017 opened 2 years ago
采用awk
awk BEGIN{RS=EOF}'{gsub(/\n/," ");print}' file
说明:awk默认将记录分隔符(record separator即RS)设置为\n,此行代码将RS设置为EOF(文件结束),也就是把文件视为一个记录,然后通过gsub函数将\n替换成空格,最后输出。
采用sed
sed ':a ; N;s/\n/ / ; t a ; ' file
说明:sed默认只按行处理,N可以让其读入下一行,再对\n进行替换,这样就可以将两行并做一行。但是怎么将所有行并作一行呢?可以采用sed的跳转功能。:a 在代码开始处设置一个标记a,在代码执行到结尾处时利用跳转命令t a重新跳转到标号a处,重新执行代码,这样就可以递归的将所有行合并成一行。
cat file | xargs
说明:这可能是最简单的一种方式。
This manual page documents the GNU version of xargs. xargs reads argu- ments from the standard input, delimited by blanks (which can be pro- tected with double or single quotes or a backslash) or newlines
上面是man手册对xargs的说明。其实xargs就是对shell命令行参数限制做的一个扩展。
这条命令的含义也很简单,将file中的内容作为参数传给X程序
如果用echo作为X程序,则命令为:
cat file | xargs echo
此命令和cat file | xargs 行为一致,因为xargs的默认行为就是打印输出。
xargs最简单,但是会多一个空白字符位,awk和sed是可控的
cat file | tr '\n' ' ' 也行,但是第二个参数不能为空
tr: when not truncating set1, string2 must be non-empty
vi extract.sh 输入脚本内容
tar -zcvf _base654_file.tar.gz extract.sh
base64 _base654_file.tar.gz 结果是多行 H4sIACmBE2IAA+3S3WrCMBQH8N62T5ExkSqoidXuyqs9hsjQfswyl5Q03UTnnn2nWf2aojCQMfj/ Llp7Ts8xOWmyNHoamW4xd26GkwfO7Z2f3gUPQ0cEwSAcBINhXzhciGEYOIzfbkl7ZWGmmjFHK2Uu vXct/0/d3/VmmewVc89LSxmZTEmWaxUlRfEUlVon0vgtb+25bqo0S1kmWcNfFC0KxIourjtmnZg1 UjZhzeauNM40xbb5dJcfj6ufo0/Wbfs09w/zvGp122xyVFwdyLXiVZafFlLwauFs1d8Xzqii/71+ uyGZeJszg6C36iG8vtidrcXGbrGTU6yU9n+F7VNnKHw0im34XHfa7oXu1TCWb6nt//ir/hSv+y9U NF0wOtZRw8/f4+oQI1qzOOhWn3mdoaeq5c+k99dfLQAAAAAAAAAAAAAAAAAAAAAAVL4ALJR32AAo AAA=
单行要额外处理 base64 _base654_file.tar.gz | awk BEGIN{RS=EOF}'{gsub(/\n/,"");print}' H4sIACmBE2IAA+3S3WrCMBQH8N62T5ExkSqoidXuyqs9hsjQfswyl5Q03UTnnn2nWf2aojCQMfj/Llp7Ts8xOWmyNHoamW4xd26GkwfO7Z2f3gUPQ0cEwSAcBINhXzhciGEYOIzfbkl7ZWGmmjFHK2UuvXct/0/d3/VmmewVc89LSxmZTEmWaxUlRfEUlVon0vgtb+25bqo0S1kmWcNfFC0KxIourjtmnZg1UjZhzeauNM40xbb5dJcfj6ufo0/Wbfs09w/zvGp122xyVFwdyLXiVZafFlLwauFs1d8Xzqii/71+uyGZeJszg6C36iG8vtidrcXGbrGTU6yU9n+F7VNnKHw0im34XHfa7oXu1TCWb6nt//ir/hSv+y9UNF0wOtZRw8/f4+oQI1qzOOhWn3mdoaeq5c+k99dfLQAAAAAAAAAAAAAAAAAAAAAAVL4ALJR32AAoAAA=
echo "H4sIACmBE2IAA+3S3WrCMBQH8N62T5ExkSqoidXuyqs9hsjQfswyl5Q03UTnnn2nWf2aojCQMfj/Llp7Ts8xOWmyNHoamW4xd26GkwfO7Z2f3gUPQ0cEwSAcBINhXzhciGEYOIzfbkl7ZWGmmjFHK2UuvXct/0/d3/VmmewVc89LSxmZTEmWaxUlRfEUlVon0vgtb+25bqo0S1kmWcNfFC0KxIourjtmnZg1UjZhzeauNM40xbb5dJcfj6ufo0/Wbfs09w/zvGp122xyVFwdyLXiVZafFlLwauFs1d8Xzqii/71+uyGZeJszg6C36iG8vtidrcXGbrGTU6yU9n+F7VNnKHw0im34XHfa7oXu1TCWb6nt//ir/hSv+y9UNF0wOtZRw8/f4+oQI1qzOOhWn3mdoaeq5c+k99dfLQAAAAAAAAAAAAAAAAAAAAAAVL4ALJR32AAoAAA=" |base64 -d|tar zxf -
成了! 上面这管道命令,最后能自动生成extact.sh,还能自带可执行权限,牛
https://blog.csdn.net/wanghao19920907/article/details/51744450?