我有一个包含此字符串的字符串(字段分隔符是百分号),存储在名为data
201%jkhjfhn%kfhngjm%mkdfhgjdfg%mkdfhgjdfhg%mkdhfgjdhfg%kdfhgjgh%kdfgjhgfh%mkfgnhmkgfnh%k,gnhjkgfn%jkdfhngjdfng
我正在尝试打印出用管道替换百分号的字符串,但它似乎比我想象的更难:
echo ${data} | awk -F"%" 'BEGIN {OFS="|"} {print $0}'
我知道我非常接近它还不够近。
我看到代码为:
1 echo the variable value into a awk session
2 set field separator as "%"
3 set as output field separator "|"
4 print the line
答案 0 :(得分:3)
试试这个:
echo "$data" | awk -F"%" 'BEGIN {OFS="|"} {$1=$1; print $0}'
最后,有时候强制awk重建整个过程很方便 记录,使用字段和OFS的当前值。要做到这一点,请使用貌似 无害的任务:
$1 = $1 # force record to be reconstituted print $0 # or whatever else with $0
如果您搜索tr
的替代方案,则只使用awk
的另一种轻量级方法:
tr '%' '|' <<< "$data"
答案 1 :(得分:3)
Sputnick为您提供了awk
解决方案,但实际上您根本不需要awk
,只需使用您的shell:
echo ${data//%/|}