check=('78905905f5a4ed82160c327f3fd34cba')
我希望能够移动此行以遵循如下所示的行:
files=('somefile.txt')
该阵列虽然有时可以跨越多行,例如:
files=('somefile.txt' 'file2.png' 'another.txt' 'andanother...')textin betweencheck=('78905905f5a4ed82160c327f3fd34cba' '5277a9164001a4276837b59dade26af2' '3f8b60b6fbb993c18442b62ea661aa6b')
数组/行总是以a)结尾,其间没有文本将包含一个闭括号.
我得到一些建议,awk可以做到这一点:
awk '/files/{ f=0 printawk '/source/ && /\)$/{ f=0 printfor(i=1;i<=d;i++){ print a[i] } g=0 delete a # remove array after found next}/check/{ f=1; g=1 }f{ a[++d]=Perl
for(i=1;i<=d;i++){ print a[i] } g=0 delete a # remove array after found next}/md5sum/ && /\)$/{ f=1; g=1 }f{ a[++d]=Python
}!g'Ruby
}!g' file
这只会跨越一条线.我被告知要扩大搜索范围:
BEGIN { checkAt = 0 filesAt = 0 scanning = 0}/check=\(/ { checkAt = NR scanning = 1}/files=\(/ { filesAt = NR scanning = 1}/)$/ { if (scanning) { if (checkAt > filesAt) { checkEnd = NR } else { filesEnd = NR } scanning = 0 }}{ lines[NR] = }END { for (i = 1; i <= NR; ++i) { if (checkAt <= i && i <= checkEnd) { continue } print lines[i] if (i == filesEnd) { for (j = checkAt; j <= checkEnd; ++j) { print lines[j] } } }}
刚学习awk所以我很感激你的帮助.或者,如果有其他工具可以做到这一点,我想听听它.有人告诉我’ed’这些类型的功能.
解决方法 首先回答你的上一个问题,是的,awk是典型的Unix工具,其他候选者是非常强大的 ,,或者……我最喜欢的… . awk的一个优点是它总是存在;它是基础系统的一部分.解决此类问题的另一种方法是使用控制ed(1)或ex(1)的编辑器脚本.好的,修改过的问题的新程序.该程序将根据需要向上或向下移动“检查”行,以便它们遵循“文件”行.
总结以上是内存溢出为你收集整理的linux – 移动行以跟随文件中的另一行全部内容,希望文章能够帮你解决linux – 移动行以跟随文件中的另一行所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)