我有许多文本文件,其中在有用信息的左边有一个垃圾块。这个块的宽度不断变化,因此我使用awk计算有用信息的起始列,然后用
idx=$(awk '/START/{print index($0,"START")}' in.txt)
idx=$(($idx-3))
colrm 1 $idx < in.txt > out.txt如何将两个连续的idx作业合并成一个?
发布于 2017-11-27 12:32:30
试试这个:
idx=$(( $(awk '/START/{print index($0,"START")}' in.txt) - 3 ))或者:
idx=$(awk '/START/{print index($0,"START")}' in.txt); idx=$(($idx-3))发布于 2017-11-27 12:32:39
你可以试试:
idx=$(( $(awk '/START/{print index($0,"START")}' in.txt) - 3 ))发布于 2017-11-27 12:31:43
理想的方法是在处理完所有行后使用END子句在Awk中执行操作,如下所示。另外,用三元操作符来检查数字是否为零也很方便。
idx_3=$(awk '/START/{pos=index($0,"START")}END{print pos?(pos-3):0}' in.txt)您也可以修改三元操作符以检查pos>=3,这取决于您的方便程度。
另外,在Awk中使用match()函数并使用RSTART标记记录开始也是一种更理想的方法。
idx_3=$(awk 'match($0, /START/){pos=RSTART; next}END{print pos?(pos-3):0}' in.txt)Awk中的特殊内置变量
https://stackoverflow.com/questions/47510929
复制相似问题