如果我有:
foo
bar
..我想将其 awk/sed 为:
foo-bar
..语法是什么?
我正在尝试在 OS X 10.6.x 上使用系统分析器:
system_profiler SPMemoryDataType | awk '/Type/ {print $2} /Speed/ {print $2}'
输出类型速度(即 DDR-1067)。尚未弄清楚如何使用print
或执行此操作printf
,可能会尝试改为grep
...
答案1
和tr
:
tr '\n' '-'
这样就够了吗?这会将每个换行符替换为逗号。
和sed
:
更漂亮的解决方案使用sed
:
sed -e N -e 's/\n/-/'
N
根据手册页将换行符附加到模式空间:
[2addr]N
将下一行输入附加到模式空间,使用嵌入的换行符将附加的内容与原始内容分隔开。请注意,当前行号会发生变化。
和bash
实际上,bash 可以做任何事tr
。为了完整起见,以下是一些例子:
while read l; do echo -n "$l-"; done
Stack Overflow 上有一个类似的问题:SED:我如何替换换行符(\n)?
答案2
awk 'BEGIN {ORS="-"} {print}'
连接您的数据。begin 语句中的内容在读取数据之前发生。这里我们定义输出记录分隔符为 -。Print
打印数据。