使用awk用换行符替换分号时出错

时间:2017-06-16 09:47:52

标签: perl awk gsub

我不知道是什么导致了这个错误。

我有一个文件#start_youtube_stream_cron.sh: #!/bin/bash #BEE OUTSIDE CAMx SERVICE="ffmpeg" RTSP_URL="rtsp://user:psw@192.168.0.101:554" YOUTUBE_URL="rtmp://a.rtmp.youtube.com/live2" YOUTUBE_KEY="<Youtube secret key 1>" #BEE INSIDE CAM RTSP_URL2="rtsp://user:psw@192.168.0.102:554" YOUTUBE_KEY2="<Youtube secret key 2>" COMMAND="ffmpeg -f lavfi -i anullsrc -rtsp_transport tcp -i ${RTSP_URL} -tune zerolatency -vcodec libx264 -t 12:00:00 -pix_fmt + -c:v copy -c:a aac -strict experimental -f flv ${YOUTUBE_URL}/${YOUTUBE_KEY} -nostdin -nostats" COMMAND2="ffmpeg -f lavfi -i anullsrc -rtsp_transport tcp -i ${RTSP_URL2} -tune zerolatency -vcodec libx264 -t 12:00:00 -pix_fmt + -c:v copy -c:a aac -strict experimental -f flv ${YOUTUBE_URL}/${YOUTUBE_KEY2} -nostdin -nostats" if /usr/bin/pgrep $SERVICE > /dev/null then echo "${SERVICE} is already running." else echo "${SERVICE} is NOT running! Starting now..." $COMMAND & $COMMAND2 & fi ,其中包含:

rmax.text

我正在尝试用这样的换行符123;456;3434;645234;234;23423; 替换分号;

"\n"

我试过了:

123
456
3434
645234
234
23423

这曾经给我语法错误 -

system('awk '{gsub(";","\n"); print}' rmax.txt');

如果我直接尝试:

syntax error at rmax line 7, near "'awk '{"
syntax error at rmax line 7, near "print}"
Execution of rmax aborted due to compilation errors.

我的错误是:

awk '{gsub(";","\n"); print}' rmax.txt

看来我的语法是正确的,但它仍然无效。

1 个答案:

答案 0 :(得分:1)

由于您在此问题上有Perl标记,我将提供Perl解决方案

perl -pe 'tr/;/\n/' rmax.text

我会提供解释,但我看不到任何可能不清楚的内容

请不要使用system或反引号来运行此操作。如果您希望它作为更大的Perl程序的一部分,那么您必须显示该程序